Ada banyak cara untuk memecahkan masalah yang Anda jelaskan:
- Logika Aplikasi
- Logika khusus tampilan -- Jika perilaku tersebut khusus untuk satu tampilan, maka letakkan perubahan di tampilan tersebut.
- Logika khusus model -- Jika perilaku khusus untuk satu model, maka mengganti metode save() untuk modelnya.
- Logika Perangkat Menengah -- Jika perilaku berhubungan dengan beberapa model ATAU perlu membungkus aplikasi yang ada, Anda dapat menggunakan sinyal pra-simpan/pasca-simpan untuk menambahkan perilaku tambahan tanpa mengubah aplikasi itu sendiri.
- Prosedur Tersimpan Basis Data -- Biasanya kemungkinan, tetapi ORM Django tidak menggunakannya. Tidak portabel di seluruh basis data.
- Pemicu Basis Data -- Tidak portabel dari satu basis data ke basis data lainnya (atau bahkan satu versi basis data ke versi berikutnya), tetapi memungkinkan Anda untuk mengontrol perilaku bersama di beberapa aplikasi (mungkin non-Django).
Secara pribadi, saya lebih suka menggunakan baik mengesampingkan metode save(), atau menggunakan sinyal Django. Menggunakan logika khusus tampilan dapat membuat Anda mengetahui aplikasi besar dengan banyak tampilan dari model yang sama.