Ограничения Django - только пользователи с определенной ролью могут иметь определенный набор полей (не null)
Пытаюсь понять, могу ли я установить условные ограничения следующим образом:
Только пользователи с role=='client'
могут иметь поле User.broker
не null.
Возможно ли это сделать, используя Meta.contstraints
или другой механизм, который позаботится об этом?
Модель пользователя:
class User...:
role = CharField(...)
broker = ForeignKey('User'...)
Полагаю, что вы ищете CheckConstraint
Как заявил Alek Yo, я могу использовать CheckConstraint
Результат работы:
constraints = [
CheckConstraint(
check=Q(broker__isnull=True) | Q(role=RoleChoices.CLIENT),
name="clients_only_can_have_broker",
)
]