我有一个这样的模型:
class Activity(models.Model):
title = models.CharField(max_length=200)
summary = models.TextField(null=True, blank=True)
tasks = models.ManyToManyField('self', symmetrical=False, null=True, blank=True)
它的工作方式如下,一个活动可以链接到自己,父活动称为“活动”,子活动/活动将被称为“任务/任务”
如何过滤模型以获取所有“活动”以及如何过滤模型以获取所有“任务”?
谢谢你的帮助.
最佳答案 干得好:
from django.db.models import Count
annotated_qs = Activity.objects.annotate(num_tasks=Count(tasks))
activities = annotated_qs.objects.filter(num_tasks=0)
tasks = annotated_qs.objects.filter(num_tasks__gt=0)
🙂
如果使用__is_null = True,你可以在没有注释的情况下获得更好的性能,但我现在无法回想起或快速谷歌它的语法.