简体   繁体   English

PK的Django Rest Framework过滤器

[英]Django Rest Framework filter by PK

I am new to Django Rest Framework and am trying to figure out how to properly filter by PK. 我是Django Rest Framework的新手,正在尝试弄清楚如何通过PK正确过滤。 I tried redefining query set, but it didn't work out. 我尝试重新定义查询集,但没有成功。 I currently have a Video class and have created several Video instances. 我目前有一个Video类,并创建了几个Video实例。 Per Video instance I have a quiz and then quiz questions. 每个视频实例都有一个测验,然后是测验问题。 When I go to list my quiz questions for a certain video quiz all questions that have been made for all quizzes are listed. 当我列出某个视频测验的测验问题时,将列出针对所有测验所做的所有问题。

Example Video/1/Quiz/Questions will list its questions and all of Video/2/Quiz/Questions. 示例Video / 1 / Quiz / Questions将列出其问题以及所有Video / 2 / Quiz / Questions。 I just want Video/1/Quiz/Questions to be listed. 我只想列出视频/ 1 /测验/问题。 Is there a simple way to do this? 有没有简单的方法可以做到这一点?

Views.py: 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: 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')

As I know, DRF don't allow nested routing as you want. 据我所知,DRF不允许您随意嵌套路由。 You will need an extension like that one cited in the docs. 您将需要在文档中引用的扩展名。

DRF Routers Doc DRF路由器文档

Yes, i am agree with @Luiz Django Rest Framework don't allow nested routing. 是的,我同意@Luiz Django Rest Framework不允许嵌套路由。 You need to just change your routing rules and your code is running perfectly. 您只需要更改路由规则,代码就可以完美运行。

Acc. 累积 to me your url.py is ..... 对我来说,您的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'),

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM