Ho un modello Django con un intervallo di date di inizio e fine. Voglio applicare la convalida in modo che nessun record abbia intervalli di date sovrapposti. Qual è il modo più semplice per implementare questo in modo che non debba ripetermi a scrivere questa logica?Aggiunta della validazione del modello Django personalizzato
ad es. Non voglio di re-implementare questa logica in un modulo e un ModelForm
e una forma di amministrazione e del modello ignorato save()
.
Per quanto ne so, Django non rende facile applicare globalmente questo tipo di criteri.
Googling non è stato molto utile, poiché la "validazione del modello" si riferisce in genere alla convalida di specifici campi del modello e non dell'intero contenuto del modello o delle relazioni tra i campi.
Questo è vicino. Dovevo anche scavalcare il mio modello save() e chiamare clean() da lì. – Cerin
Ma per cosa? AdminSite (ModelForm) chiama clean() automaticamente. Ma chiamare clean() dal metodo save() potrebbe produrre ValidationError in un momento inaspettato e non verrà risolto come previsto. – alTus
Non tutto chiama pulito. Questo deve essere convalidato indipendentemente da dove è stato salvato. Una pagina del sito spezzata è preferibile ai dati corrotti. – Cerin