我有一个django rest框架项目。我试图覆盖create方法,以便如果在URL中传递了某些参数或参数,它将避免某些通过表单传递的默认信息。
我正在通过创建将用于创建新对象的数据对象来做到这一点。现在,我正在使用request.user
来吸引用户,但这给了我以下错误:
TypeError at /api/v2/preferences/namespace1/
'User' object is not subscriptable
,我不确定如何解决。
这是我的模式视图集创建方法重写的代码:
@permission_classes((IsAuthenticated))
def create(self, request, *args, **kwargs):
print(request)
namespace = self.kwargs.get('namespace', None)
path = self.kwargs.get('path', None)
if namespace is None and path is None:
return super().create(request)
if namespace and path is None:
data = {
"person":self.request.user,
'version':request.POST['version'],
'namespace':namespace,
'path':request.POST['path'],
'value':request.POST['value'],
'user_id':request.user['id'],
}
return super().create(data)
if namespace and path:
data = {
"person":self.request.user,
'version':request.POST['version'],
'namespace':namespace,
'path':path,
'value':request.POST['value'],
'user_id':request.user['id'],
}
return super().create(data)
答案 0 :(得分:1)
request.user
从数据库返回一个User
对象,它不是dict
;因此您的request.user['id']
订阅操作将会失败。
您需要获取User对象的id
属性:
request.user.id
因此,将data
字典设为:
data = {
...
...
'user_id': request.user.id,
}