Django 从多对一关系序列化嵌套查询集

Django 从多对一关系序列化嵌套查询集,django,postgresql,serialization,orm,django-queryset,Django,Postgresql,Serialization,Orm,Django Queryset,我有一个调查应用程序,里面有调查、问题和问题的选择。每个问题都有其所属调查的外键,每个选项都有其所属问题的外键。 多项选择题的清除模型代码如下所示 class Survey(models.Model): # survey attributes, not needed in the query for this question class Question(models.Model): survey = models.ForeignKey(Survey) prompt

我有一个调查应用程序,里面有调查、问题和问题的选择。每个问题都有其所属调查的外键,每个选项都有其所属问题的外键。 多项选择题的清除模型代码如下所示

class Survey(models.Model):
    # survey attributes, not needed in the query for this question 

class Question(models.Model):
    survey = models.ForeignKey(Survey)
    prompt = models.TextField()

class Choice(models.Model):
    question = models.ForeignKey(Question)
    letter = models.CharField(max_length=1)
    text = models.TextField()
    is_correct = models.BooleanField(default=False)
为了获得调查中的所有问题,我可以选择我需要的所有数据,并以此作为反向关系

Survey.objects.get(pk=1).question_set\
.select_related('choice__text', 'choice__letter')\
.values('prompt', 'choice__text', 'choice__letter')
它会像预期的那样回来

[{
    prompt: str, 
    choice__text: str,
    choice__letter: char, 
},]    
…但这将在每一行重复提示,理想情况下,格式将更接近

[{
    prompt: str,
    choice_set: [{
        letter: char,
        text: str,
    },]
},]
我以前解决过一个类似的问题,将其放入panda数据框中,并在序列化之前对数据进行分组,但我只能假设django的创建者已经找到了一种方法来实现这一点


有没有任何方法可以轻松地嵌套这些查询,而不必遍历每个问题模型并查询其选择

使用django rest框架中的序列化程序应该可以做到这一点。序列化程序可以像上“嵌套关系”一节中的示例那样嵌套