from django.contrib.auth.models import User
a = User.objects.create_user("1","2","3")
b = User.objects.create_user("1","2","3")
沒有錯誤...爲什麼django的create_user方法不能驗證唯一性?但
a.validate_unique()
ValidationError: {'username': [u'User with this Username already exists.']}
我希望當B正在保存爲create_user
部分接收驗證錯誤。
看着Django Model Instance Reference,'保存時會發生什麼'一節沒有描述任何時候的保存。
這是一個故意的設計決定還是由於使用django-nonrel造成的副作用?我希望關係數據庫能夠返回一個IntegrityError或類似的東西。
謝謝!我使用的是Django-nonrel(與Mongo),但我希望Mongo能夠很好地遵循唯一性約束。 我的解決方案最終創建了我自己的create_user函數,它在提交之前進行了驗證;這聽起來合理嗎? (我沒有使用表單來創建他的用戶)。 – AlexeyMK 2012-03-23 04:49:46
這幾乎是正常的做事方式。數據庫約束實際上是最後一道防線,當它們觸發時不會告訴你什麼,所以最好在提交到數據庫之前徹底驗證輸入。 – 2012-03-23 13:40:05