Reputation: 18745
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'...)
Upvotes: 0
Views: 178
Reputation: 18745
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",
)
]
Upvotes: 0