Mengatasi Penyimpanan Model Django untuk Kes Tertentu
Dalam Django, kaedah save() dalam model bertanggungjawab untuk mengekalkan data ke pangkalan data. Walau bagaimanapun, terdapat senario di mana anda mungkin ingin mengubah suai tingkah laku ini berdasarkan kriteria tertentu. Satu kes sedemikian ialah menskala semula imej hanya apabila ia baru ditambah atau dikemas kini.
Masalah:
Dalam model dengan medan untuk imej, ibu jari dan penerangan, anda perlu mengubah saiz dan menyimpan thumbnail (ibu jari) hanya jika imej utama (imej) dibuat atau diubah suai. Mengemas kini medan perihalan tidak seharusnya mencetuskan saiz semula imej.
Penyelesaian:
Untuk mencapai ini, anda boleh mengatasi kaedah simpan() lalai dengan menggunakan sifat tersuai yang menyemak untuk perubahan dalam medan imej:
<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>
Cara ia Berfungsi:
Atas ialah kandungan terperinci Bila Perlu Mengatasi Penyimpanan Model Django untuk Saiz Semula Imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!