Почему метод django create_user не проверяет уникальность? - PullRequest
1 голос
/ 13 марта 2012
from django.contrib.auth.models import User

a = User.objects.create_user("1","2","3")
b = User.objects.create_user("1","2","3")

пока нет ошибок ...

a.validate_unique()
ValidationError: {'username': [u'User with this Username already exists.']}

Я ожидал бы получить ошибку проверки при сохранении b как части create_user.

Если посмотреть на Справочник экземпляров модели Django , в разделе «что происходит, когда вы сохраняете» не описывается сохранение в любой момент.

Является ли это намеренным проектным решением или побочным эффектом из-за использования django-nonrel? Я ожидал, что реляционная база данных выдаст IntegrityError или что-то подобное.

Ответы [ 2 ]

3 голосов
/ 13 марта 2012

Возможно, вы используете SQLite, который не поддерживает ограничения уникальных ключей.

create_user предполагает, что вы выполнили все необходимые проверки, обычно в функциях проверки формы. Это дает вам достаточно веревки, чтобы повеситься.

0 голосов
/ 06 августа 2012

По умолчанию MongoDB не блокирует проверку успешности записи перед возвратом управления.

Рассмотрим включение безопасного режима Монго .

...