我是Django Rest Framework的新手,我正试图找出如何通过PK正确过滤。我尝试重新定义查询集,但它没有成功。我目前有一个Video类,并创建了几个视频实例。每个视频实例我有一个测验,然后测验问题。当我为某个视频测验列出我的测验问题时,会列出所有针对所有测验的问题。
示例视频/ 1 /测验/问题将列出其问题和所有视频/ 2 /测验/问题。我只想要列出视频/ 1 /测验/问题。有一种简单的方法可以做到这一点吗?
Views.py:
# questions
class QuizQuestionsList(generics.ListCreateAPIView):
queryset = QuizQuestions.objects.all()
serializer_class = QuizQuestionSerializer
class QuizQuestionsDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = QuizQuestions.objects.all()
serializer_class = QuizQuestionSerializer
Urls.py:
url(r'^video/(?P<pk>[0-9]+)/quiz/questions/list',
views.QuizQuestionsList.as_view(),
name='quizquestions-list'),
url(r'^video/(?P<pk>[0-9]+)/quiz/questions/detail$',
views.QuizQuestionsDetail.as_view(),
name='quizquestions-detail'),
Serializer.py
class QuizQuestionSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = QuizQuestions
fields = ('url', 'quiz_id', 'question_text', 'answer_one', 'answer_two', 'answer_three', 'answer_four',
'correct_answer')
答案 0 :(得分:0)
据我所知,DRF不允许嵌套路由。 您将需要一个类似于文档中引用的扩展名。
答案 1 :(得分:0)
是的,我同意@Luiz Django Rest Framework不允许嵌套路由。您只需更改路由规则,您的代码就可以正常运行。
度Acc。对我来说你的url.py是.....
url(r'^video/quiz/questions/list/(?P<pk>[0-9]+)',
views.QuizQuestionsList.as_view(),
name='quizquestions-list'),
url(r'^video/quiz/questions/detail/(?P<pk>[0-9]+)',
views.QuizQuestionsDetail.as_view(),
name='quizquestions-detail'),