首页 > 解决方案 > 如何检查查询集中包含的每个对象的字段的验证?

问题描述

我有一个“匹配”的查询集。在“匹配”模型中有一个布尔字段,我想检查这个字段是否等于我的查询集中包含的每个对象的 True。我怎样才能做到这一点 ?

matches = Match.objects.filter(phase=phase)

models.py

class Match(models.Model):
    isFinished  = models.BooleanField(default=False)
    team1Win    = models.BooleanField(default=False)
    team2Win    = models.BooleanField(default=False)
    phase       = models.ForeignKey(Phase, default=None, on_delete=models.CASCADE)
    teams       = models.ManyToManyField(Team, default=None, blank=True)

有问题的字段是isFinished`。

标签: pythondjangodjango-queryset

解决方案


您可以通过检查是否有任何带有isFinished=False. 如果这样的实例不存在,那么所有人都有isFinished=True

Match.objects.filter(phase=phase,isFinished=False).exists()

如果您的查询集中True有任何语句并且所有语句都带有.isFinished=FalseFalseMatchsisFinished=True


推荐阅读