How do I get the default value for a field in a Django model?

元气小坏坏 提交于 2019-12-03 06:36:22

问题


I have a Django model with some fields that have default values specified. I am looking to grab the default value for one of these fields for us later on in my code. Is there an easy way to grab a particular field's default value from a model?


回答1:


You can get the field like this:

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

and the default is just an attribute of the field:

myfield.default



回答2:


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



回答3:


As of Django 1.9.x you may use:

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



回答4:


If you need the default values for more than one field (e.g. in some kind of reinitialization step) it may be worth to just instantiate a new temporary object of your model and use the field values from that object.

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'

Of course this is only worth it, if the temporary object can be constructed without further performance / dependency issues.



来源:https://stackoverflow.com/questions/1308332/how-do-i-get-the-default-value-for-a-field-in-a-django-model

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!