gpt4 book ai didi

Python Django RestFramework 路由触发器

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:13 26 4
gpt4 key购买 nike

我正在使用 python 2.7 和 django 1.7 构建 API,但我遇到了问题。我不是 Rest Framework 方面的专家,但我了解基 native 制。

我可以通过举个例子来继续我的问题。我有一条路线可以说

/api/project/

Django Rest Framework 为我提供了这条路线的所有基本操作,我不需要编写它们,例如:

POST, GET, PUT, DELETE => /api/project/

事实是,我想在新建项目的时候做一些操作。我想添加创建新项目的用户的id。

我想在创建函数中添加某种触发器/回调:

class ProjectViewSet(viewsets.ModelViewSet):
queryset = Project.objects.all()
serializer_class = ProjectSerializer

def create(self, request, *args, **kwargs):

我想保留 Rest Framework 的内部行为(我不想重写路由函数),但我希望路由做额外的事情,我需要在触发器/回调中使用请求对象。有点像

def callback(request, instance):
instance.created_by = request.user
instance.save()

你有什么想法吗?

谢谢。

最佳答案

您需要将 creator_id 字段添加到序列化程序以及资源表示的模型中。然后你可以在你的 View 中做这样的事情:-

import copy

class ProjectViewSet(viewsets.ModelViewSet):

...

def create(self, request, *args, **kwargs):
data = copy.deepcopy(request.data)
data['creator_id'] = request.user.id
request._data = data

return super(ProjectViewSet, self).create(request, *args, **kwargs)

关于Python Django RestFramework 路由触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32095120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com