Sebelum menyimpan model, saya mengubah ukuran gambar. Tetapi bagaimana saya bisa mengecek apakah gambar baru ditambahkan atau hanya deskripsi yang diperbarui, sehingga saya dapat melewati penyetelan ulang setiap kali model disimpan?
class Model(model.Model):
image=models.ImageField(upload_to='folder')
thumb=models.ImageField(upload_to='folder')
description=models.CharField()
def save(self, *args, **kwargs):
if self.image:
small=rescale_image(self.image,width=100,height=100)
self.image_small=SimpleUploadedFile(name,small_pic)
super(Model, self).save(*args, **kwargs)
Saya ingin mengubah skala hanya jika gambar baru dimuat atau gambar diperbarui, tetapi tidak ketika deskripsi diperbarui.
Jawaban:
Beberapa pemikiran:
Tidak yakin apakah itu akan bermain bagus dengan semua alat django pseudo-otomatis (Contoh: ModelForm, contrib.admin dll).
sumber
Periksa bidang pk model. Jika tidak ada, maka itu adalah objek baru.
Sunting: Saya telah menambahkan tanda centang untuk 'gambar' di form.changed_data. Ini mengasumsikan bahwa Anda menggunakan situs admin untuk memperbarui gambar Anda. Anda juga harus mengganti metode save_model default seperti yang ditunjukkan di bawah ini.
sumber
Anda dapat memberikan argumen tambahan untuk mengonfirmasi gambar baru diposkan.
Sesuatu seperti:
atau lulus variabel permintaan
Saya pikir ini tidak akan merusak tabungan Anda ketika dipanggil sederhana.
Anda dapat meletakkan ini di admin.py Anda sehingga ini berfungsi dengan situs admin juga (untuk solusi kedua di atas):
sumber
Apa yang saya lakukan untuk mencapai tujuan adalah membuat ini ..
dan di bawah metode save () adalah ini ..
jadi ketika saya mengedit beberapa bidang tetapi tidak mengedit gambar, saya taruh ini ..
Anda dapat mengganti
"skip creating photo thumbnail"
dengan"im just editing the description"
atau dengan teks yang lebih formal.Semoga yang ini membantu!
sumber
Permintaan database untuk catatan yang ada dengan PK yang sama. Bandingkan ukuran file dan checksum dari gambar baru dan yang ada untuk melihat apakah mereka sama.
sumber
Django 3: Mengganti metode model yang sudah ditentukan sebelumnya
sumber
Dalam versi baru seperti ini:
sumber
Saya telah menemukan satu sama lain cara sederhana untuk menyimpan data ke dalam basis data
models.py
Dalam database saya hanya memiliki 2 variabel
views.py
Dalam hal ini saya telah membuat contoh model hanya dalam views.py dan menempatkan / menyimpan data menjadi 2 variabel dari hanya dilihat.
sumber