任何人都可以向我解释这个吗?
class EventBlock(models.Model):
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True)
class EventSlot(models.Model):
event_block = models.ForeignKey(EventBlock)
>>> EventSlot.objects.count()
>>> 446
>>> EventSlot.objects.filter(event_block__created_by__groups__name='Manager').count()
>>> 438
>>> EventSlot.objects.exclude(event_block__created_by__groups__name='Manager').count()
>>> 446
当然,如果过滤器上有438个匹配项,那么排除应该删除那些438个匹配项,留下8个匹配项?但它没有删除任何比赛。我很困惑。
答案 0 :(得分:0)
我认为您可能会得到意想不到的结果,因为created_by
用户属于其他群组以及“经理”群组。
您可以先通过获取经理列表重新排列查询。
managers = User.objects.filter(groups__name='Manager')
EventSlot.objects.filter(event_block__created_by__in=managers)
EventSlot.objects.exclude(event_block__created_by__in=managers)