from django.contrib.auth.models import User
>>> User._meta.get_field("username").null
False
但是
>>> user()
<User: >
WTH?我期望IntegrityError
因为null
值不允许存储在null=False
的数据库中。
然后我读了this:
Django从不为空CharField或TextField类型存储NULL。它 存储一个空字符串('')。所以这就是你没有得到的原因 IntegrityError for null = False。
好吧,那必须意味着有一个空字符串被定义为默认值吗?
User._meta.get_field( “用户名”)。缺省 django.db.models.fields.NOT_PROVIDED
什么?我期待一个空字符串......
那么如果没有为特定字段提供值(例如assertEquals
),您应该如何检查(例如,在assertRaise
/ username
/ ...的测试中使用) )实例化模型时(例如User
)
会引起异常吗?
我想知道有人会怎么写单元测试来检查这个。 (如果assertNotRaises
存在,则会更容易。)
答案 0 :(得分:0)
您可以使用full_clean
方法。
>>> User().full_clean()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/falsetru/.virtualenvs/django16/local/lib/python2.7/site-packages/django/db/models/base.py", line 950, in full_clean
raise ValidationError(errors)
ValidationError: {'username': [u'This field cannot be blank.'], 'password': [u'This field cannot be blank.']}