2
我有两个模型,Survey
和Question
。 A Survey
可以包含多个Question
。我想创建一个ListAPIView
以返回与Questions
关联的Surveys
列表。所以返回的JSON是这样的:Django Rest Framework如何自定义ListAPIView
[{
'name': 'Survey 1',
'questions':[{'question': 'q1'}, {'question': 'q2'}]
},
{
'name': 'Survey 2',
'questions':[{'question': 'q3'}, {'question': 'q4'}]
},
...
]
我想使用自带的DRF包CursorPagination
。所以这是我曾尝试:
class SurveyList(ListAPIView):
pagination_class = CursorPagination
def get_queryset(self):
# How can I construct a queryset that matches the JSON structure above?
由于ListAPIView的get_queryset
预计要返回一个QuerySet。我需要手动创建上述的JSON结构并将其放入一个查询集。
所以我的问题是如何手动创建一个查询集?
更新:这里是模型定义
class Survey(models.Model):
name = models.TextField()
class Question(models.Model):
question = models.TextField()
survey = models.ForeignKey(Survey)
嗨Daniil,这绝对看起来很有希望。我已经更新了模型定义。我想知道是否需要'source = question_set'和'depth = 1'部分。 – Cheng
'深度= 1'意味着序列化程序将更深入地发现你的关系(我不记得它是否有默认值)。 'question_set'是必需的,因为与'Questions'的关系在技术上超出了你的模型(默认情况下,Django REST框架会试图序列化你在你的模型中定义的那些字段) –
嗨Daniil,我阅读了文档,但找不到解释关于'question_set'。对于格式'?_set',部分必须匹配模型的名称? – Cheng