如何获取Django模型中字段的默认值?

mik*_*kec 31 django default model

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

Col*_*son 51

TheModel._meta.get_field('the_field').get_default()
Run Code Online (Sandbox Code Playgroud)

  • 这应该是正确的答案. (2认同)
  • 这是最好的答案。`.get_default()` 更可靠,而 `.default` 并不总是返回默认值(例如,它可能是 `NOT_PROVIDED`)。 (2认同)

Dan*_*man 18

你可以得到这样的字段:

myfield = MyModel._meta.get_field_by_name('field_name')
Run Code Online (Sandbox Code Playgroud)

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

myfield.default
Run Code Online (Sandbox Code Playgroud)

  • 现在,`get_field_by_name`方法返回一个元组作为其第一个项目的元组. (10认同)
  • 向下投票,因为这已经过时了. (5认同)
  • field.default可能是可调用的.应该使用get_default() (3认同)
  • 因为它目前已经过时而被投票.应该做TheModel._meta.get_field('the_field').get_default() (3认同)

Ale*_*nov 13

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

field = TheModel._meta.get_field('field_name')
default_value = field.get_default()
Run Code Online (Sandbox Code Playgroud)