Как получить значение по умолчанию для поля в модели Django? - PullRequest
25 голосов
/ 20 августа 2009

У меня есть модель Django с некоторыми полями, в которых указаны значения по умолчанию. Я хочу получить значение по умолчанию для одного из этих полей для нас позже в моем коде. Есть ли простой способ получить значение определенного поля по умолчанию из модели?

Ответы [ 4 ]

43 голосов
/ 19 июня 2014
TheModel._meta.get_field('the_field').get_default()
17 голосов
/ 20 августа 2009

Вы можете получить поле следующим образом:

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

и по умолчанию это просто атрибут поля:

myfield.default
12 голосов
/ 19 марта 2016

Начиная с Django 1.9.x вы можете использовать:

field = TheModel._meta.get_field('field_name')
default_value = field.get_default()
0 голосов
/ 21 февраля 2015

Если вам нужны значения по умолчанию для более чем одного поля (например, на каком-то шаге повторной инициализации), возможно, стоит просто создать новый временный объект вашей модели и использовать значения полей из этого объекта.

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'

Конечно, это того стоит, если временный объект может быть построен без дальнейших проблем с производительностью / зависимостями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...