from django.contrib.auth.models import User
a = User.objects.create_user("1","2","3")
b = User.objects.create_user("1","2","3")
aucune erreur encore ...Pourquoi la méthode create_user de django ne valide-t-elle pas l'unicité?
a.validate_unique()
ValidationError: {'username': [u'User with this Username already exists.']}
je me attends à recevoir l'erreur de validation lorsque b est en cours d'enregistrement dans le cadre de create_user
.
En regardant le Django Model Instance Reference, la section «que se passe-t-il lorsque vous enregistrez» ne décrit pas la sauvegarde à tout moment.
Est-ce une décision de conception intentionnelle ou un effet secondaire dû à l'utilisation de django-nonrel? J'aurais attendu une base de données relationnelle pour retourner une IntegrityError ou quelque chose de similaire.
Merci! J'utilise Django-nonrel (avec Mongo), mais je m'attendrais à ce que Mongo soit assez bon pour suivre les contraintes d'unicité. Ma solution a fini par créer ma propre fonction create_user qui a fait la validation avant de soumettre; Est-ce que cela semble raisonnable? (Je n'utilise pas de formulaires pour créer son utilisateur). – AlexeyMK
C'est à peu près la façon normale de faire les choses. Les contraintes de base de données sont vraiment une dernière ligne de défense, et ne vous en disent pas beaucoup quand elles se déclenchent, il est donc préférable de valider complètement les entrées avant de vous engager dans la base de données. –