我有一個模型,如下所示: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