Ограничения 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",
            )
        ]
Вернуться на верх