gpt4 book ai didi

Django 自递归 ManyToManyField 过滤查询

转载 作者:行者123 更新时间:2023-12-01 04:17:32 24 4
gpt4 key购买 nike

我有一个这样的模型:

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,你可以在没有注释的情况下获得更好的性能。 ,但我现在不记得或快速谷歌它的语法。

关于Django 自递归 ManyToManyField 过滤查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3152024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com