Има много начини за решаване на проблема, който описахте:
- Логика на приложението
- Логика, специфична за изглед -- Ако поведението е специфично за един изглед, поставете промените в изгледа.
- Логика, специфична за модела -- Ако поведението е специфично за един модел, тогава замени метода save() за модела.
- Логика на междинен софтуер -- Ако поведението е свързано с множество модели ИЛИ трябва да се обвие около съществуващо приложение, можете да използвате сигнали за предварително/след записване за добавяне на допълнителни поведения, без да променяте самото приложение.
- Съхранени процедури в базата данни -- Обикновено възможност, но ORM на Django не ги използва. Не е преносим между бази данни.
- Задействания на базата данни -- Не е преносим от една база данни в друга (или дори една версия на база данни в друга), но ви позволява да контролирате споделеното поведение в множество (евентуално не-Django) приложения.
Лично аз предпочитам да използвам или да отменя метода save(), или да използвам Django сигнал. Използването на специфична за изглед логика може да ви хване при големи приложения с множество изгледи на един и същи модел(и).