找出MultiRelatedManager是否是django中的空QuerySet的最佳方法是什么

时间:2012-06-20 15:26:55

标签: django django-queryset

我有2个型号, BaconEggs都有ForeignKeySpam模型。

我需要找出与Eggs无关的培根,目前我是按照以下方式进行的:

objs = Bacon.objects.select_related.filter(somefilter=value)

for obj in objs:
    if obj.spam.eggsspam.count():
        continue

    do_something()

我确定必须有更优化的方式吗?

2 个答案:

答案 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)