Er zijn veel manieren om het door u beschreven probleem op te lossen:
- Toepassingslogica
- Bekijk-specifieke logica -- Als het gedrag specifiek is voor een enkele weergave, breng dan de wijzigingen in de weergave aan.
- Modelspecifieke logica -- Als het gedrag specifiek is voor een enkel model, dan de methode save() overschrijven voor het model.
- Middleware-logica -- Als het gedrag betrekking heeft op meerdere modellen OF om een bestaande applicatie moet worden gewikkeld, kunt u Django's pre-save/post-save signalen om extra gedrag toe te voegen zonder de applicatie zelf te wijzigen.
- In database opgeslagen procedures -- Normaal gesproken een mogelijkheid, maar Django's ORM gebruikt ze niet. Niet overdraagbaar tussen databases.
- Databasetriggers -- Niet overdraagbaar van de ene database naar de andere (of zelfs de ene versie van een database naar de volgende), maar stelt u in staat om gedeeld gedrag over meerdere (mogelijk niet-Django) applicaties te controleren.
Persoonlijk geef ik er de voorkeur aan om ofwel de methode save() te overschrijven, ofwel een Django-signaal te gebruiken. Het gebruik van view-specifieke logica kan je opvallen in grote applicaties met meerdere views van hetzelfde model(len).