我有一个Django模型,其中某些字段已经指定了默认值。我想要在后面的代码中获取这些字段之一的默认值。是否有一种简单的方法从模型中获取特定字段的默认值?
TheModel._meta.get_field('the_field').get_default()
从Django 1.9.x开始,您可以使用:
field = TheModel._meta.get_field('field_name')
default_value = field.get_default()
你可以像这样获取字段:
myfield = MyModel._meta.get_field_by_name('field_name')
默认情况下,只是字段的一个属性:
myfield.default
get_field_by_name
方法返回一个元组,其中第一个元素是字段对象。 - Adam.default
不总是返回默认值(例如,它可能是 NOT_PROVIDED
)。.get_default()
更加可靠。 - Rufflewind如果您不想显式地编写字段名称,也可以这样做:
MyModel._meta.get_field(MyModel.field.field_name).default
这将返回字段的默认值。
如果您需要多个字段的默认值(例如在某种重新初始化步骤中),则只需实例化模型的新临时对象,并使用该对象的字段值可能是值得的。
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'
.get_default()
更加可靠,而.default
并不总是返回默认值(例如,它可能是NOT_PROVIDED
)。 - Rufflewind