![](/img/trans.png)
[英]Can Not create a new model and save it into the database. Django rest framework view model set
[英]Can't create new model object within django rest framework model view set: 'User' object is not subscriptable
我有一个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)
request.user
从数据库返回一个User
对象,它不是dict
; 因此,您的request.user['id']
订阅操作可能会失败。
您需要获取User对象的id
属性 :
request.user.id
因此,将data
字典设为:
data = {
...
...
'user_id': request.user.id,
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.