繁体   English   中英

无法在Django Rest框架模型视图集中创建新的模型对象:“用户”对象不可下标

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM