【发布时间】:2015-04-14 04:50:16
【问题描述】:
在django模型表单中,如何为空值显示空白,即防止在表单上显示(无)。使用postgresql,django 1.6.5。我不希望在模型实例中为允许的空值添加空间。
【问题讨论】:
在django模型表单中,如何为空值显示空白,即防止在表单上显示(无)。使用postgresql,django 1.6.5。我不希望在模型实例中为允许的空值添加空间。
【问题讨论】:
相反,我最终使用了 forms.HiddenInput() 并且没有显示带有 null 的字段,这非常适合我的情况!
【讨论】:
默认情况下,每个 Field 类都假定该值是必需的,因此如果您传递一个空值——None 或空字符串("")——那么clean() 将引发ValidationError 异常:
>>> from django import forms
>>> f = forms.CharField()
>>> f.clean('foo')
u'foo'
>>> f.clean('')
Traceback (most recent call last):
...
ValidationError: [u'This field is required.']
>>> f.clean(None)
Traceback (most recent call last):
...
ValidationError: [u'This field is required.']
如果一个字段有required=False 并且您将clean() 传递给一个空值,那么clean() 将返回一个规范化的空值而不是提高ValidationError。对于CharField,这将是一个 Unicode 空字符串。对于其他 Field 类,它可能是 None。 (这因领域而异。)
像这样:
>>> f = forms.CharField(required=False)
>>> f.clean('foo')
u'foo'
>>> f.clean('')
u''
>>> f.clean(None)
u''
【讨论】: