如何获取Django模型中字段的默认值?

时间:2009-08-20 19:29:06

标签: django model default

我有一个Django模型,其中一些字段指定了默认值。我希望稍后在我的代码中为我们获取其中一个字段的默认值。有没有一种简单的方法可以从模型中获取特定字段的默认值?

5 个答案:

答案 0 :(得分:43)

TheModel._meta.get_field('the_field').get_default()

答案 1 :(得分:17)

你可以这样得到这样的字段:

myfield = MyModel._meta.get_field_by_name('field_name')

,默认只是字段的一个属性:

myfield.default

答案 2 :(得分:12)

自Django 1.9.x起,您可以使用:

field = TheModel._meta.get_field('field_name')
default_value = field.get_default()

答案 3 :(得分:1)

如果您不想显式地写入字段名称,也可以执行以下操作: MyModel._meta.get_field(MyModel.field.field_name).default

答案 4 :(得分:0)

如果您需要多个字段的默认值(例如,在某种重新初始化步骤中),则可能需要实例化模型的新临时对象并使用该对象的字段值。

temp_obj = MyModel()
obj.field_1 = temp_obj.field_1 if cond_1 else 'foo'
...
obj.field_n = temp_obj.field_n if cond_n else 'bar'

当然,如果可以构造临时对象而没有进一步的性能/依赖性问题,那么这是值得的。