0

私の質問がすでに SO で尋ねられている場合は申し訳ありませんが、探している答えが見つかりませんでした。

と で を作成しModelましImageFieldDateField。私のdjango自動管理者(django 1.4)には、対応するものがあります。ユーザーがデータを入力したModelAdminときに、画像から日付を設定したいと思います。要約すると、たとえば、選択後のメソッドのようなものをオーバーライドすることによってImageField、 が選択されたときに手に入れたいと思います。ImageField

どうやってやるの ?メソッドが存在することをdjango docで読むことができましたcleanが、それが呼び出された方法/時間は私には不明です。

ご協力いただきありがとうございます !

4

2 に答える 2

0

django-filer の画像モデルを見てみましょう:
https://github.com/stefanfoulis/django-filer/blob/develop/filer/models/imagemodels.py

save メソッドでも同様のことができます。

def save(self, *args, **kwargs):
    if self.date_taken is None:
        try:
            exif_date = self.exif.get('DateTimeOriginal', None)
            if exif_date is not None:
                d, t = str.split(exif_date.values)
                year, month, day = d.split(':')
                hour, minute, second = t.split(':')
                self.date_taken = datetime(
                                   int(year), int(month), int(day),
                                   int(hour), int(minute), int(second))
        except:
            pass
    if self.date_taken is None:
        self.date_taken = datetime.now()
    self.has_all_mandatory_data = self._check_validity()
    try:
        # do this more efficient somehow?
        self.file.seek(0)
        self._width, self._height = PILImage.open(self.file).size
    except Exception:
        # probably the image is missing. nevermind.
        pass
    super(Image, self).save(*args, **kwargs)
于 2012-05-10T07:26:34.970 に答える
0

save()モデルのメソッドをオーバーライドするか、より適切にpre_save signalを使用できます。内部では、オブジェクトに画像はあるが日付がないかどうかを確認し、日付を に設定できますdatetime.datetime.now()

于 2012-05-10T07:16:43.820 に答える