模型字段中的默认属性

时间:2013-04-29 13:38:14

标签: django django-models

我有这样的模特:

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

2 个答案:

答案 0 :(得分:0)

技术上是的,但这看起来不像你试图做的那样你提到的“some_field是必需的”。如果要允许表单接受空白值,则必须将some_field设置为接受空白值。您需要将blank=True添加到字段构造函数中,以便验证将通过,并且将在数据库中使用默认值。

您也永远不会保存这些对象,因此实际上并未在数据库中创建它们。

答案 1 :(得分:0)

这取决于你想要做什么。如果您不打算在表单中使用“模型”字段,则无需添加blank=Truedefault值足以在数据库中使用该值保留字段(如果没有给出)。

另一方面,如果您打算使用模型表单中的字段,则需要将blank=True添加到模型中,或required=False添加到模型中的字段。

现在与你的问题有关,是的。如果您尝试这样做,那正是您应该得到的。