反向多目标关系的Django-queryset

反向多目标关系的Django-queryset,django,Django,给定一个FaqTopic id,我将尝试获取回答该主题问题的响应者的结果集。我假设这至少需要两个查询,但我不完全确定如何做。我的模型大致如下: class FaqTopic(models.Model): name = models.CharField(max_length=50) class Respondant(models.Model): name = models.CharField(max_length=50) class Answer(MediaReady):

给定一个FaqTopic id,我将尝试获取回答该主题问题的响应者的结果集。我假设这至少需要两个查询,但我不完全确定如何做。我的模型大致如下:

class FaqTopic(models.Model):
    name = models.CharField(max_length=50)

class Respondant(models.Model):
    name = models.CharField(max_length=50)

class Answer(MediaReady):
    text = models.TextField( blank=True )
    respondant = models.ForeignKey( Respondant, blank=True, null=True )

class Question(MediaReady):
    text = models.CharField( max_length=255, blank=True )
    answers = models.ManyToManyField( Answer, blank=True, null=True )
    topic = models.ForeignKey( FaqTopic, blank=True, null=True )
我可以这样做:

topic = FaqTopic.objects.get(pk=topic_id)
questions = topic.question_set.all()

然后循环回答每个问题,建立一组独特的回答。但这看起来很难看。

您可以在一个查询中完成。这将为您提供一个回答了特定主题问题的受访者

respondants = Respondant.objects.filter(answer__question__topic__name = name)
或者如果您有一个
主题
对象

respondants = Respondant.objects.filter(answer__question__topic = topic)
你可以阅读更多关于