默认属性
我有模式是这样的:默认属性
class A(models.Model):
some_field = models.CharField(max_length=50, default='bbb')
如果我创建新的对象是这样的:
a1 = A()
a2 = A(some_field="ccc")
print "a1 {}".format(a1.some_field)
print "a2 {}".format(a2.some_field)
我应该得到
A1 BBB
a2 ccc
?
从技术上说是的,但是这看起来并不像你提到的“some_field是必需的”错误。如果您希望允许表单接受空白值,则必须将some_field
设置为接受空白值。您需要将blank=True
添加到您的字段构造函数中,以便验证将通过并在数据库中使用默认值。
您也永远不会保存这些对象,因此它们实际上并未在数据库中创建。
这取决于你想要做什么。如果您不打算在表单中使用模型字段,则不需要添加blank=True
。如果没有给出值,default
的值将足以使数据库中的字段保持该值。另一方面,如果您打算在模型表单中使用该字段,则需要将blank=True
添加到您的模型中,或者将required=False
添加到模型中的字段中。
现在与您的问题有关,是的。这正是你应该得到的,如果你试图这样做。
模型自己进行验证,而不仅仅是在ModelForms中使用。当调用'is_valid'时,表单使用这些验证。有关更多信息,请参阅[此处](https://docs.djangoproject.com/en/dev/ref/models/instances/#validating-objects)。 – Ngenator 2013-04-29 15:16:52
我明白了,但我只是在没有空白属性的情况下测试了shell中的示例,它允许我将它保存到数据库,只是使用默认值。但没有空白,'ModelForm'没有验证。这是当我搜索文档格式'Models'并看到这个:“请注意,这是不同于null。null是纯数据库相关的,而空白是验证相关的。如果一个字段有空= True,表单验证将允许条目如果一个字段为空= False,则该字段将是必需的。“ – 2013-04-29 15:25:44
我明白你的意思了,但他提到他得到验证错误,所以我专注于表单验证。我会在我的回答中澄清。 – Ngenator 2013-04-29 15:38:30
你试过了吗? – 2013-04-29 13:40:46
我得到错误,需要some_field。为什么? – 2013-04-29 13:55:01