Python 多对多表BooleanField中单个真值的约束
我希望实现以下目标:Python 多对多表BooleanField中单个真值的约束,python,django,Python,Django,我希望实现以下目标: 可以在多个类别下标记列表 一个列表最多可以有一个主类别。这是最能描述它的类别,在它标记的所有类别中 管理员不能为一个列表标记多个主要类别 在mymodels.py中,我有: 来自django.db导入模型的 从django.db.models导入UniqueConstraint、CheckConstraint 类列表(models.Model): 标题=型号。CharField(最大长度=50), content=models.TextField(), 类别=型号.Many
models.py中,我有:
来自django.db导入模型的
从django.db.models导入UniqueConstraint、CheckConstraint
类列表(models.Model):
标题=型号。CharField(最大长度=50),
content=models.TextField(),
类别=型号.ManyToManyField(
“类别”,
通过class='CategoryMembership',
相关的_name='listings'
)
类别(models.Model):
标题=型号。CharField(最大长度=50),
类别成员(models.Model):
listing=models.ForeignKey(
表册
on_delete=models.CASCADE
)
类别=models.ForeignKey(
类别
on_delete=models.CASCADE
)
main_category=models.BooleanField(默认值=False)
类元:
约束=[
唯一约束(
name='unique\\列表\类别\成员资格',
字段=['listing','category']
)]
为了实现2和3,我想我可以为CategoryMembership
的Meta
类添加另一个约束。但是我不知道如何继续,因为我不想阻止列表中有多个类别,其中main\u category==False
这样的限制可能吗?还是有更聪明的方法来构建模型以实现这一点?请参见
我会尝试:
UniqueConstraing(
name='name',
fields=['listing'],
condition=Q(main_category=True),
)