我有2个型号,
Bacon
和Eggs
都有ForeignKey
到Spam
模型。
我需要找出与Eggs
无关的培根,目前我是按照以下方式进行的:
objs = Bacon.objects.select_related.filter(somefilter=value)
for obj in objs:
if obj.spam.eggsspam.count():
continue
do_something()
我确定必须有更优化的方式吗?
答案 0 :(得分:2)
尝试:
Bacon.objects.filter([m2m_field_name]__isnull=True)
答案 1 :(得分:2)
你想要annotations。代码看起来类似于:
Bacon.objects.annotate(num_eggs=Count('spam__egg_set')).filter(num_eggs__eq=0)