モデルのインスタンスを保存しているときにイメージのサイズを変更しようとしています。保存する前にDjango ImageFieldの内容を取得するには?
class Picture(models.Model):
image_file = models.ImageField(upload_to="pictures")
thumb_file = models.ImageField(upload_to="pictures", editable=False)
def save(self, force_insert=False, force_update=False):
image_object = Image.open(self.image_file.path)
#[...] nothing yet
super(Picture, self).save(force_insert, force_update)
問題は、モデルを保存する前にself.image_file.pathが存在しないことです。正しいパスを返しますが、イメージはまだありません。画像がないので、サイズ変更のためにPILで開くことができません。
thumb_file(別のImageField)にサムネイルを保存したいので、モデルを保存する前に処理を行う必要があります。
ファイルを開くには良い方法がありますか(メモリ内にtmpイメージオブジェクトがあるかもしれません)、最初にモデル全体を保存し、サイズを変更してから再度保存する必要がありますか?
のいずれか.. > 'NoneType' オブジェクトには属性がありません動作する – JasonTS