为什么django的create_user方法不能验证唯一性?

时间:2012-03-13 04:32:54

标签: python django orm django-nonrel

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 Model Instance Reference,'当您保存'时会发生什么?部分没有描述任何时候的保存。

由于使用django-nonrel,这是故意的设计决定还是副作用?我原本期望关系数据库返回IntegrityError或类似的东西。

2 个答案:

答案 0 :(得分:3)

您可能正在使用SQLite,它不支持唯一键约束。

create_user假设您已经完成了所有必需的检查,通常是在表单的验证功能中。它给你足够的绳索让自己挂起来。

答案 1 :(得分:0)

默认情况下,MongoDB不会阻止在返回控制之前验证写入是否成功。

考虑enabling safe mongo's mode