[英]Constraint of a single True value in many-to-many through table BooleanField
我想实现以下目标:
在我的models.py
,我有:
from django.db import models
from django.db.models import UniqueConstraint, CheckConstraint
class Listing(models.Model):
title = models.CharField(max_length=50),
content = models.TextField(),
categories = models.ManyToManyField(
'Category',
through='CategoryMembership',
related_name='listings'
)
class Category(models.Model):
title = models.CharField(max_length=50),
class CategoryMembership(models.Model):
listing = models.ForeignKey(
Listing,
on_delete=models.CASCADE
)
category = models.ForeignKey(
Category,
on_delete=models.CASCADE
)
main_category = models.BooleanField(default=False)
class Meta:
constraints = [
UniqueConstraint(
name='unique_listing_category_membership',
fields=['listing', 'category']
)]
为了实现 2 和 3,我想我可以向CategoryMembership
的Meta
class 添加另一个约束。 但我不知道如何继续,因为我不想阻止列表中有多个类别,其中main_category == False
在 through 表中。
这样的约束可能吗? 或者有没有更聪明的方法来构建模型来实现这一点?
见https://docs.djangoproject.com/en/3.1/ref/models/constraints/#condition
我会尝试:
UniqueConstraing(
name='name',
fields=['listing'],
condition=Q(main_category=True),
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.