python - 对 List 和 Retrieve Rest API 使用一个基于类的 View

标签 python django django-rest-framework

我目前有两个不同的基于类的 View ,用于详细说明特定对象和列出所有对象:

class StatusList(ListAPIView):
    permission_classes = (IsAuthenticated,)
    serializer_class = serializers.StatusSerializer

    def get_queryset(self):
        queryset = helperfunctions.getObjects(self.request.user, models.Status)
        return queryset


class StatusDetail(RetrieveAPIView):
    permission_classes = (IsAuthenticated,)
    serializer_class = serializers.StatusSerializer

    def get_queryset(self):
        queryset = helperfunctions.getObjects(self.request.user, models.Status)
        return queryset

请注意,helperfunctions.getObjects() 只是返回与用户共享同一机构的对象,这样他们就看不到他们不应该看到的状态。

我想知道的是是否有一个选项可以只对 StatusDetail 和 StatusList 使用一个基于类的 View ,它会自动知道当它在 get 请求中获得 pk 时它返回适当的对象,而当它没有时',它应该返回整个对象列表。

感谢您的帮助:)

最佳答案

使用viewsets , 像这样 :

from rest_framework import viewsets, permissions, mixins    
class StatusDetail(mixins.ListModelMixin, #specify wanted mixins
                       mixins.RetrieveModelMixin,
                       viewsets.GenericViewSet): 
    permission_classes = (IsAuthenticated,)
    serializer_class = serializers.StatusSerializer

    def get_queryset(self):
        queryset = helperfunctions.getObjects(self.request.user, models.Status)
        return queryset

关于python - 对 List 和 Retrieve Rest API 使用一个基于类的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47854175/

相关文章:

python - 如何安装 Python/Django 模块?

server - 从 swagger 规范生成 django rest 框架服务器

python - 不改变模型数据的 Django REST Framework

django - 如何将 API 正确匹配到 Django 中的 View

python - 如何修复属性错误: 'Web3' object has no attribute 'toChecksumAddress' ?

python - scrapy 需要 python 2.7 但我已经有了

python - 具有关联对象的多对多和定义的所有关系在删除时崩溃

node.js - 无法在 Heroku 中安装 Node

python - Matplotlib xlabel 绘图错误(IndexError : list index out of range)

用于截断文本的 Django 模板标记