47

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

4

5 回答 5

77
TheModel._meta.get_field('the_field').get_default()
于 2014-06-19T17:10:10.937 回答
24

从 Django 1.9.x 开始,您可以使用:

field = TheModel._meta.get_field('field_name')
default_value = field.get_default()
于 2016-03-18T23:35:45.390 回答
18

你可以得到这样的字段:

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

并且默认值只是该字段的一个属性:

myfield.default
于 2009-08-20T19:41:14.057 回答
1

如果您不想显式编写字段名称,也可以这样做: MyModel._meta.get_field(MyModel.field.field_name).default

于 2020-06-16T08:03:00.323 回答
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'

当然,只有在没有进一步的性能/依赖性问题的情况下可以构造临时对象,这才是值得的。

于 2015-02-21T16:24:21.657 回答