在Django Rest API框架中仅允许更新

0 投票
3 回答
1512 浏览
提问于 2025-04-17 20:19

我正在做一个非常简单的应用程序,里面只有一个模型,里面有几个字段。我希望这些模型只能通过/admin页面来创建或删除(也就是使用标准的Django管理框架),而让其他的API框架只能对这些对象进行修改。

有没有什么简单的方法可以实现这个呢?

3 个回答

0

如果你只是想更新对象,可以使用 UpdateApiView。通过这个视图,你可以为你的模型创建一个更新功能(使用PUT方法)。如果有任何疑问,可以查看 DRF文档

2

只需要创建一个视图集,使用更新/获取模型的混合功能。

from rest_framwork import viewsets, mixins
class FooViewSet(mixens.RetrieveModelMixin,
                 mixins.UpdateModelMixin,
                 viewsets.GenericViewSet):
    model = Foo
    queryset = Foo.objects.all()
    serializer_class = FooSerializer

这样做只会给你一个API接口,用来获取或更新你模型的某个实例。

3

你需要把 http_method_names 设置成下面这样:

class WebViewSet(mixins.CreateModelMixin,
                 mixins.ListModelMixin,
                 mixins.UpdateModelMixin,
                 viewsets.GenericViewSet):

    model = WebTransaction
    http_method_names = ('get', 'put')

撰写回答