我有一个模型A和一个具有ForeignKey到A(一对多关系)的模型B.我有一个“B”项目的ID列表,我的用户不能看到(称为forbidden_list
,但我想找到任何“A”,其中包含任何不在该列表中的“B”,甚至如果它有B在列表中。如果我做A.objects.exclude(child__id__in=forbidden_list)
,我得到任何A没有任何禁止B作为孩子,但我没有得到A既有想要也有不想要的B.
答案 0 :(得分:1)
试试这个:
from django.db.models import Count
A.objects
.annotate(total_b=Count(child__id))
.annotate(excluded_b=Count(child__id__in=forbidden_list))
.exclude(total_b=excluded_b)