Je cherche un bon exemple de la façon d'atteindre les objectifs suivants:Vous cherchez un bon exemple d'utilisation de get_or _create dans les vues de Django et d'élever une erreur de formulaire
Je voudrais utiliser get_or_create pour vérifier déjà si un objet existe dans ma base de données. Si ce n'est pas le cas, il sera créé. Si cela existe, je ne créerai pas le nouvel objet, mais je devrais déclencher une erreur de formulaire pour informer l'utilisateur qu'il doit entrer des données différentes (par exemple, un nom d'utilisateur différent).
La vue contient:
p, created = Person.objects.get_or_create(
email = registration_form.cleaned_data['email'],
defaults = {
'creationDate': datetime.datetime.now(),
'dateOfBirth': datetime.date(1970,1,1)
})
So « p » contiendra la personne existante si elle existe, ou la nouvelle personne sinon. Je voudrais agir sur la valeur booléenne dans 'created' afin d'éviter d'enregistrer la Person et de réafficher le registration_form et de déclencher une erreur de validation de formulaire appropriée.
L'alternative que je considère est de faire une vérification dans une méthode de validation de formulaire personnalisé pour voir si une personne existe avec les données dans le champ 'email' fourni, et juste soulever une erreur de validation.
Merci pour l'astuce sur la méthode save() ModelForms. difficile de trouver ça! – pfctdayelise