Existuje mnoho způsobů, jak vyřešit problém, který jste popsali:
- Aplikační logika
- Logika specifická pro zobrazení -- Pokud je chování specifické pro jeden pohled, vložte změny do pohledu.
- Logika specifická pro daný model -- Pokud je chování specifické pro jeden model, pak přepíše metodu save() pro model.
- Logika middlewaru -- Pokud se chování týká více modelů NEBO je potřeba zabalit do existující aplikace, můžete použít Django's signály před uložením/po uložení přidat další chování bez změny samotné aplikace.
- Uložené procedury v databázi -- Normálně možnost, ale Django's ORM je nepoužívá. Nelze přenášet mezi databázemi.
- Spouštěče databáze -- Nelze přenášet z jedné databáze do druhé (nebo dokonce z jedné verze databáze do další), ale umožňuje vám řídit sdílené chování napříč více aplikacemi (možná mimo Django).
Osobně dávám přednost použití buď přepsání metody save() nebo použití signálu Django. Použití logiky specifické pro zobrazení vás může zachytit u velkých aplikací s více pohledy na stejný model(y).