2009-08-20 105 views
21

我有一个Django模型,其中一些字段具有指定的默认值。我期待在我的代码中为我们稍后获取这些字段的默认值。是否有一种简单的方法从模型中获取特定字段的默认值?如何获取Django模型中字段的默认值?

回答

15

你可以得到场这样的:

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

,默认就是现场的属性:

myfield.default 
+0

任何一个_被挖掘到的内部。看到我的问题:http://stackoverflow.com/questions/1011946/django-know-if-property-is-the-default-value – 2009-09-12 05:54:07

+9

现在'get_field_by_name'方法返回一个字段对象作为其第一项的元组。 – Adam 2014-05-09 10:27:32

+0

@PaulTarjan你是对的,但是'_meta'是那些成熟的,不太可能改变元素的元素之一。普遍的共识是可以直接访问模型的_meta。 – 2014-10-14 21:20:55

35
TheModel._meta.get_field('the_field').get_default() 
+2

这应该是现在正确的答案。 – Teekin 2017-04-30 19:44:26

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' 

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

9

由于Django的1.9.x的,你可以使用:

field = TheModel._meta.get_field('field_name') 
default_value = field.get_default() 
相关问题