ImageFieldを保存するときに、アップロードした画像のサイズを変更、圧縮、最適化する方法を探しています。Django ImageFieldでモデルを保存するときにユーザーが画像ファイルをアップロードしたかどうかを確認する方法は?
class Image(models.Model):
name = models.CharField(max_length=254, blank=True)
caption = models.TextField(max_length=1000, blank=True)
height = models.IntegerField()
width = models.IntegerField()
image = models.ImageField(upload_to='', height_field='height', width_field='width', storage=S3MediaStorage())
私の最初の考えは上書きモデルのsave()
、そこにこのロジックを実装することでしたが、私は、ユーザーが画像ファイルを更新しない場合、サイズ変更/圧縮/最適化を再度実行したくない(つまり、もし彼は既存のオブジェクトのname
またはcaption
を更新して保存します)。
ユーザーのみ例えば、モデル内の別のフィールドを変更したときに何ていない新しいイメージファイルがのImageFieldにアップロードされたときにチェックする適切な方法ですが、。ユーザーは
caption
を更新しますが、それ以外はそのままの状態にしていますか?アップロードされた画像ファイルはどのようにコードにアクセスできますか?私。ピローに渡すことができる実際のイメージファイルを含む変数は何ですか?
編集:これはthe suspected duplicateからユニークです。フィールドが変更されているかどうかを尋ねているわけではありません。なぜなら、それは常に誤検出を引き起こすからです。ユーザーがイメージファイルをアップロードしたかどうかを尋ねています。これは即座に変更(サイズ変更/最適化/圧縮)されるため、アップロードしたイメージをすぐにダウンロードすると、ランダムに生成されたファイル名でバイナリが異なるしたがって、ファイル名またはバイナリを比較することは、ユーザーが別のイメージをアップロードしているかどうかを判断する有効な方法ではありません。
[Django:保存すると、フィールドが変更されたかどうかを確認するにはどうすればいいですか?](http://stackoverflow.com/questions/1355150/django-when-saving-how-can-you-check-あなたがこの問題を区別するための情報を追加しました。ありがとうございました – rnevius