小编Nad*_*ada的帖子

Django 休息框架。检索的工作原理

我对 Django 休息框架相当陌生,我有几个问题可以为我解决很多问题。

我正在查看简单的 CRUD 通用视图的文档,例如 ListAPIView、Retrieve... 等。

对于我的列表视图,我是这样创建的:

class CourseListApiView(ListAPIView):
    queryset = Course.objects.all()
    serializer_class = CourseListSerializer
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为查询集返回 Course.objects.all() 所以所有的课程都会出现。

我不清楚的是 RetrieveApi 中的查询集是如何工作的

class CourseRetrieveAPIView(RetrieveAPIView):
    queryset = Course.objects.all()
    serializer_class = CourseRetrieveSerializer
Run Code Online (Sandbox Code Playgroud)

这是我的检索视图,它从我的链接中获取 pk 并返回相应的课程。我不清楚的是为什么查询集是 Course.objects.all(),而不是从 URL 获取 kwargs 并过滤我的课程的过滤查询。我按照自己的方式尝试并得到了相同的结果,我的观点是:

class CourseRetrieveAPIView(RetrieveAPIView):
    serializer_class = CourseRetrieveSerializer

    def get_queryset(self):
        queryset = Course.objects.filter(pk=self.kwargs.get('pk'))
        return queryset 
Run Code Online (Sandbox Code Playgroud)

这更有意义,因为查询集是 Course.objects.filter(pk=self.kwargs.get('pk')) 而不是 Course.objects.all() 这对我来说没有意义,因为我正在过滤我的课程通过 URL 中的 pk

希望我的问题是有道理的。如果您需要任何说明,请发表评论。我知道答案很明显,但我对这个框架很陌生

python django rest django-rest-framework

4
推荐指数
1
解决办法
3873
查看次数

标签 统计

django ×1

django-rest-framework ×1

python ×1

rest ×1