首页 文章

Django REST Framework不会改变模型数据

提问于
浏览
1

我正在尝试创建一个中间件Web应用程序,允许用户控制我们服务器上的某些服务 . 为此,我在Django中创建了几个模型,用于跟踪服务器的当前状态,或者哪些输入对任何给定服务有效的列表 .

API需要能够:

  • 列出模型的所有实例

  • 显示模型的一个实例的详细信息

  • 接受JSON转换为软件说明(即"This list of outputs should source from this input")

我不需要进一步访问数据 - 模型细节的任何更改都将由超级用户通过Django管理界面完成,因为只有在软件配置发生变化时才会更改 .

到目前为止,我发现的所有DRF文档都假定API将用于创建和更新模型数据 - 如何使用DRF进行GET调用和自定义操作?或者我应该放弃DRF并只使用普通的Django,返回JSON而不是HTML?

编辑:我意识到我的困惑来自哪里;我误解了序列化程序与视图集的目的/功能 . 序列化程序将始终创建更新方法,因为它们将传入的数据转换为模型对象 . 视图集决定了该对象可以执行的操作,因此您可以在其中启用不同的访问方法 .

2 回答

  • 2

    如果您使用 ModelViewSet ,则可以使用 http_method_names 类变量 .

    class MyModelViewSet(viewsets.ModelViewSet):
        queryset = MyModel.objects.all()
        serializer_class = MyModelSerializer
        http_method_names = ['get']
    
  • 2

    您可以尝试使用readonlymodelviewset,例如来自docs

    class AccountViewSet(viewsets.ReadOnlyModelViewSet):
        """
        A simple ViewSet for viewing accounts.
        """
        queryset = Account.objects.all()
        serializer_class = AccountSerializer
    

相关问题