我有一个模型,如下所示:Django的自递归ManyToManyField筛选查询
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)
它的工作原理是这样,一个活动可以链接到自身和家长的活动被称为“活动”和儿童活动/活动将被称为'任务/任务'
如何过滤模型以获取所有'活动'以及如何过滤模型以获取所有'任务'?
感谢您的帮助。
行得相当工作,我怎么想它。 活动可以有0个或更多'任务',任务也可以有0个或更多'子任务'。所有这些都发生在同一张桌子里。 如果活动不是“子”元素,则该活动只是一项活动 如果任务是活动的“子”元素,则该任务为任务。 我希望我有道理!我知道这可以做到,但不知道如何。 – ninja123 2010-06-30 20:10:14
实际上它做一些tweeks后的工作......把它改为: annotated_qs = Activity.objects.annotate(num_parent =计数( '活动')) 活动= annotated_qs.filter(num_parent = 0) 任务= annotated_qs。滤波器(num_parent__gt = 0) – ninja123 2010-06-30 20:32:08