3

给定一个 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()

然后遍历每个问题并建立一组独特的受访者。但这似乎很难看。

4

1 回答 1

4

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

respondants = Respondant.objects.filter(answer__question__topic__name = name)

或者,如果你有一个topic对象,

respondants = Respondant.objects.filter(answer__question__topic = topic)

您可以在此处阅读有关跨越关系的查找的更多信息

于 2013-09-26T20:51:14.620 回答