特定の場合の Django モデル保存のオーバーライド
Django では、モデルの save() メソッドがデータをデータベースに永続化する役割を果たします。ただし、特定の基準に基づいてこの動作を変更する必要があるシナリオもあります。そのようなケースの 1 つは、画像が新しく追加または更新された場合にのみ画像を再スケーリングすることです。
問題:
画像、サム、および説明のフィールドを持つモデルでは、メイン画像 (画像) が作成または変更された場合にのみ、サムネイル (サムネイル) のサイズを変更して保存する必要があります。説明フィールドを更新しても、画像のサイズ変更はトリガーされません。
解決策:
これを実現するには、チェックするカスタム プロパティを使用して、デフォルトの 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 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.thumb = SimpleUploadedFile(name, small_pic) super(Model, self).save(*args, **kwargs)</code>
仕組み:
以上が画像のサイズ変更のために Django モデル保存をオーバーライドする場合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。