首頁  >  文章  >  後端開發  >  如何重寫 Django 模型的保存方法以選擇性調整圖像大小?

如何重寫 Django 模型的保存方法以選擇性調整圖像大小?

DDD
DDD原創
2024-10-22 16:26:02174瀏覽

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

重寫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

        # 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 方法以調整圖像大小,而不是在編輯其他欄位時? 問題:提供的程式碼調整影像大小每次儲存模型時,即使只更新描述。這是低效率且不必要的。 解決方案:建議的解決方案涉及創建一個用作圖像字段的 setter 和 getter 的屬性。這允許追蹤影像欄位的更改,並且僅在修改時調整大小:透過使用此方法,僅在新增或更新影像時才調整大小,有效解決了原始問題中提出的問題.

以上是如何重寫 Django 模型的保存方法以選擇性調整圖像大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn