2009-08-20 201 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() 
相關問題