J'ai un modèle de réservation qui doit vérifier si l'élément réservé est disponible. Je voudrais avoir la logique derrière déterminer si l'article est disponible centralisé de sorte que peu importe où je sauve l'instance ce code valide qu'il peut être sauvé.Affichage d'exceptions de validation de modèle personnalisé dans le site d'administration Django
Au moment où j'ai ce code dans une mesure de sauvegarde en fonction de ma classe de modèle:
def save(self):
if self.is_available(): # my custom check availability function
super(MyObj, self).save()
else:
# this is the bit I'm stuck with..
raise forms.ValidationError('Item already booked for those dates')
Cela fonctionne très bien - l'erreur est élevée si l'article est disponible, et mon article ne sont pas enregistrées. Je peux capturer l'exception de mon code de formulaire frontal, mais qu'en est-il du site d'administration Django? Comment puis-je faire en sorte que mon exception s'affiche comme toute autre erreur de validation sur le site d'administration?
Je suppose que je voulais écrire, en un seul endroit, ce qui a assuré qu'une instance ne pouvait pas être sauvé qui a brisé mes règles de validation - puisque la fonction de sauvegarde est appelée peu importe où vous faites votre sauvegarde (admin ou front end), il est logique de le mettre là. –
Oui, mais ValidationError est utilisé pour informer l'utilisateur final que les informations qu'il met dans un formulaire sont erronées. Si vous devez assurer, que certaines règles sont conservées, peut-être que vous devriez utiliser un assert? Ou, si sauver peut simplement échouer, que peut-être vous devriez simplement avoir un code de retour, si elle a été enregistrée correctement. Je ne sais pas, exactement de quoi tu as besoin. – gruszczy
Ce lien ne lui répond pas du tout. Il veut réutiliser la validation dans son modèle en admin. Ne pas réimplémenter la validation dans l'admin ... – Cerin