Trying to figure out if and how can I set conditional constraints like this:
Only users with role=='client'
can have User.broker
field not null.
Is it possible to do that using Meta.contstraints
or a different mechanism that will take care of that?
User model:
class User...:
role = CharField(...)
broker = ForeignKey('User'...)
CodePudding user response:
I believe what you're looking for is CheckConstraint
CodePudding user response:
As Alek Yo stated, I can use CheckConstraint
The working result:
constraints = [
CheckConstraint(
check=Q(broker__isnull=True) | Q(role=RoleChoices.CLIENT),
name="clients_only_can_have_broker",
)
]