你可以用
UniqueConstraint
status
处于活动状态:
from django.db.models import Q
class Product(models.Model):
user = models.ForeignKey(…)
STATUS_ACTIVE = 'active'
STATUS_CANCELLED = 'cancelled'
STATUS_DRAFT = 'draft'
STATUS_CHOICES = (
(STATUS_ACTIVE,'Active'),
…
)
status = models.CharField(…, choices=STATUS_CHOICES)
class Meta:
constraints = [
UniqueConstraint(
fields=['user'],
condition=Q(status=STATUS_ACTIVE),
name='one_user_per_active_product'
)
]
condition=â¦
parameter [Django-doc]
是从
django-3.0
而且,并不是所有的数据库本身都强制执行这些约束。