2015-09-30 25 views
0

所以,我必须简化这个在Django中,如何获得具有特定反向关系的所有记录的查询集?

class Activity(models.Model): 
    start_date = models.DateField() 
    title = models.TextField() 
    ... 

class Outcome(models.Model): 
    title = models.TextField() 
    code = models.CharField(max_length=20) 
    ... 

class ActivityOutcome(models.Model): 
    note = models.TextField() 
    outcome = models.ManyToMany(Outcome) 
    activity = models.ManyToMany(Activity) 

class Organisation(models.Model): 
    title = models.TextField() 
    outcomes = models.ManyToManyField(Outcome, related_name='outcome_organisation') 
    ... 

class Programme(models.Model 
    title = models.TextField() 
    outcomes = models.ManyToMAnyField(Outcome, related_name='outcome_programme') 
    ... 

我想有一个类的ActivityOutcome,因为它使得它更易于处理的数据模型,但我需要有一些Programme成果和一些Organisation成果。如果我想要一个包含所有“程序”结果的QuerySet,我该怎么做?

回答

1

您可以使用__isnull过滤所有具有相关程序的结果。

outcomes = Outcome.objects.filter(outcome_programme__isnull=False) 

如果不止一个程序可以有相同的结果,您可能需要使用distinct(),以防止重复。

outcomes = Outcome.objects.filter(programme__isnull=False).distinct() 
+0

谢谢,我会给它一个。 – Dan

相关问题