Django Rest Framework由PK过滤

时间:2016-04-04 21:39:46

标签: python django django-rest-framework

我是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')

2 个答案:

答案 0 :(得分:0)

据我所知,DRF不允许嵌套路由。 您将需要一个类似于文档中引用的扩展名。

DRF Routers Doc

答案 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'),