Django REST Framework不会改变模型数据

时间:2017-12-20 04:19:43

标签: python django django-rest-framework

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

API需要能够:

  • 列出模型的所有实例
  • 显示模型的一个实例的详细信息
  • 接受JSON转换为软件说明(即"此输出列表应来自此输入")

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

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

编辑:我已经意识到我的困惑来自哪里;我误解了序列化程序与视图集的目的/功能。序列化程序将始终具有create + update方法,因为它们将传入的数据转换为模型对象。视图集确定可以对该对象执行的操作,以便启用不同的访问方法。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

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