首頁 > 後端開發 > Python教學 > 如何重寫 Django 的 Save 方法以進行選擇性模型更新?

如何重寫 Django 的 Save 方法以進行選擇性模型更新?

Linda Hamilton
發布: 2024-10-22 16:34:03
原創
1089 人瀏覽過

How to Override Django's Save Method for Selective Model Updating?

Django 僅在某些情況下覆蓋模型的保存

問題:

儲存🎜>問題:

儲存🎜>問題:

儲存模型時Django模型,如果新增圖像,則需要調整圖像大小。但是,如果僅更新模型的描述,您希望跳過調整大小。

<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.image_small = SimpleUploadedFile(name, small_pic)
        super(Model, self).save(*args, **kwargs)</code>
登入後複製

解決方案:

要實現此目的,您可以建立一個充當設定器的自訂屬性影像欄位和一個標誌來指示影像是否已變更。 此解決方案可確保僅在變更時調整影像大小,同時避免僅在更新描述時調整大小。此外,這種方法保持了與 Django 的偽自動工具(如 ModelForm 和 contrib.admin)的兼容性。

以上是如何重寫 Django 的 Save 方法以進行選擇性模型更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板