Подтвердить что ты не робот

Как получить значение по умолчанию для поля в модели Django?

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

4b9b3361

Ответ 1

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

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

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

myfield.default

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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'

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