Модели Django 5.1 с полями, использующими db_default, бросаются на full_clean
Пытаемся реализовать в Django 5 новый атрибут db_default
для полей
В качестве примера можно привести следующее поле:
editable = models.BooleanField(db_default=True)
Ожидается, что если editable
не указан при создании нового экземпляра, то ORM не выдаст ошибку, а сохранит экземпляр, и что значение editable
будет установлено в True
на уровне базы данных.
Для создания нового объекта выполните следующее:
product_obj = models.Product(
id=id,
name=name,
is_active=is_active,
inventory_type=inventory_type,
leadtime=leadtime,
)
product_obj.full_clean()
product_obj.save()
ожидается успех.
Вместо full_clean()
возникает ValidationError
:
django.core.exceptions.ValidationError: {'editable': ['“<django.db.models.expressions.DatabaseDefault object at 0x151db1c70>” value must be either True or False.']}
и подобное поведение происходит во всей моей кодовой базе для любого поля, для которого установлено значение db_default
(CharField с выбором, IntegerField и т.д.)
Очевидно, я не понимаю, как следует использовать db_default
.