Каково значение по умолчанию для поля DecimalField в Django?
Я добавляю новое поле DecimalField в свою модель, какое значение оно будет иметь по умолчанию в базе данных (если я не укажу значение по умолчанию явно в поле, например, default=1.23)?
amount = models.DecimalField(max_digits=15, decimal_places=3)
Я ожидаю, что это будет либо NULL, либо 0.0 (или None или Decimal(0.000) в python), но что?
Не нашел упоминания об этом в документации: https://docs.djangoproject.com/en/2.2/ref/models/fields/#decimalfield
Я использую Django 2.2, но ожидаю, что это соответствует всем версиям.
Основывается на вашем определении. Значение по умолчанию будет 0.000
Если у вас был ключевой аргумент null=True
, то вы можете ожидать NULL
, где значение не было введено.
Django не устанавливает никаких значений по умолчанию. Вы должны сами указать значение по умолчанию.
amount = models.DecimalField(max_digits=15, decimal_places=3, default=0.0)
Очевидно, что значение по умолчанию должно быть NULL, но это произойдет только тогда, когда вы активируете его, т.е. установите null = True
в качестве одного из атрибутов поля модели. Однако я не проверял это в последнее время.
Однако я рекомендую установить значение по умолчанию самостоятельно. Например, default = 0.000
.
Альтернативно, вам нужно передать другой атрибут, подобный blank = True
или required = False
, если вы хотите, чтобы поле модели было опциональным полем. В противном случае, оно всегда будет предлагать вам заполнить его каким-либо десятичным значением.