Django 当实例化模型时,如何检查不为特定字段提供值是否会导致错误?

Django 当实例化模型时,如何检查不为特定字段提供值是否会导致错误?,django,django-testing,Django,Django Testing,但是 >>用户() 什么?我希望出现IntegrityError,因为null值不允许存储在null=False的数据库中 然后我读到: Django从不为空CharField或TextField类型存储NULL。信息技术 存储空字符串(“”)。所以这就是为什么你没有得到 null的IntegrityError=False 好的,这一定意味着有一个空字符串被定义为默认值,对吗 用户._meta.get_字段(“用户名”)。默认值 未提供django.db.models.fields 什么?我希

但是

>>用户()
什么?我希望出现
IntegrityError
,因为
null
值不允许存储在
null=False
的数据库中

然后我读到:

Django从不为空CharField或TextField类型存储NULL。信息技术 存储空字符串(“”)。所以这就是为什么你没有得到 null的IntegrityError=False

好的,这一定意味着有一个空字符串被定义为默认值,对吗

用户._meta.get_字段(“用户名”)。默认值 未提供django.db.models.fields

什么?我希望有一个空字符串

那么,在实例化模型(例如,
用户
)时,如果没有为特定字段(例如,
用户名
)提供值,您应该如何检查(例如,在测试中使用
assertEquals
/
检查)
是否会导致异常

编辑 我想知道有人会如何编写一个单元测试来检查这一点。(如果
assertNotRaises
存在,它会更容易)。

您可以使用该方法

>>User().full_clean()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/home/falsetru/.virtualenvs/django16/local/lib/python2.7/site packages/django/db/models/base.py”,第950行,完全干净
引发验证错误(错误)
ValidationError:{'username':[u'此字段不能为空。'],'password':[u'此字段不能为空。]}

您正在检查是否引发了ValidationErrors,即如果
User.\u meta.get\u字段(“username”)。空白
False
。我问的是“如果
User.\u meta.get\u字段(“用户名”).null
False
from django.contrib.auth.models import User

>>> User._meta.get_field("username").null
False
>>> user()
<User: >
>>> 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.']}