選択的なサイズ変更のための Django モデルの Save メソッドのオーバーライド
質問:
Django モデルのsave メソッドは、画像が追加または更新されたときのみオーバーライドされ、他のフィールドが編集されたときはサイズ変更されませんか?
問題:
提供されたコードは画像のサイズを変更します説明のみが更新される場合でも、モデルが保存されるたびに。これは非効率的であり、不必要です。
解決策:
提案される解決策には、画像フィールドのセッターおよびゲッターとして機能するプロパティを作成することが含まれます。これにより、画像フィールドへの変更を追跡し、変更された場合にのみサイズ変更することができます。
<code class="python">class Model(model.Model): _image = models.ImageField(upload_to='folder') thumb = models.ImageField(upload_to='folder') description = models.CharField() def set_image(self, val): self._image = val self._image_changed = True # Or put whole logic in here small = rescale_image(self.image, width=100, height=100) self.image_small = SimpleUploadedFile(name, small_pic) def get_image(self): return self._image image = property(get_image, set_image) def save(self, *args, **kwargs): if getattr(self, '_image_changed', True): small = rescale_image(self.image, width=100, height=100) self.image_small = SimpleUploadedFile(name, small_pic) super(Model, self).save(*args, **kwargs)</code>
このアプローチを使用すると、画像が追加または更新された場合にのみサイズ変更が行われ、元の質問で生じた懸念に効果的に対処できます。 .
以上が選択的な画像サイズ変更のために Django モデルの Save メソッドをオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。