【问题标题】:list object has no attribute copy列表对象没有属性副本
【发布时间】:2019-03-19 04:41:55
【问题描述】:
feed_obj = self.get_feed_obj(request, kwargs.get('feed_id'))
        ad_ingredient_id = kwargs.get('ad_ingredient_id')
        adingredient_obj = AdIngredient.objects.filter(feed_id=feed_obj.id, created_by_id=request.user.id, state=1).first()
        for data in self.data_formating(request, feed_obj):
            serializer = self.serializer_class(adingredient_obj,data=data,partial=True)
            if serializer.is_valid():
                serializer.save()
            else:
                return Response(
                    {
                        'success': False,
                        'detail': serializer.errors
                    },
                    status=status.HTTP_400_BAD_REQUEST
                )
        return Response(
            {
                'success': True,
                'detail': 'Feed Ad Ingredients information updated successfully',
                'data': feed_obj.id
            },
            status=status.HTTP_200_OK
        )

它没有更新数据,它一直在保留创建对象时添加的旧数据。

/api/feeds/ad-ingredient/55/ 处的 AttributeError 'list' 对象没有属性 'copy'

追溯:

内部文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/django/core/handlers/exception.py” 39. response = get_response(request)

_legacy_get_response 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/django/core/handlers/base.py” 249. response = self._get_response(request)

_get_response 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/django/core/handlers/base.py” 187. response = self.process_exception_by_middleware(e, request)

_get_response 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/django/core/handlers/base.py” 185. response = Wrapped_callback(request, *callback_args, **callback_kwargs)

wrapped_view 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/django/views/decorators/csrf.py” 58. return view_func(*args, **kwargs)

视图中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/rest_framework/viewsets.py” 83. return self.dispatch(request, *args, **kwargs)

调度中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/rest_framework/views.py” 477. 响应 = self.handle_exception(exc)

handle_exception 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/rest_framework/views.py” 437. self.raise_uncaught_exception(exc)

调度中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/rest_framework/views.py” 474. 响应 = 处理程序(请求,*args,**kwargs)

更新中的文件“/Users/omairbukhari/justads/backend/feeds/views.py” 738. request_data = request.data.copy()

【问题讨论】:

  • list.copy 在 Python 3.3 中引入。如果您使用的是 Python 2.7,您可能应该降级您正在使用的 django 版本。以后请提供整个堆栈跟踪。
  • 我已经添加了traceback....希望对您定位问题有帮助....
  • 看我的回答..

标签: python django python-2.7


【解决方案1】:

list.copy 是在 Python 3.3 中引入的。

您使用的是 Python 2.7,因此您应该将您使用的 django 版本降级(到 1.11):

来自Django's docs

Django version  Python versions
1.11            2.7, 3.4, 3.5, 3.6
2.0             3.4, 3.5, 3.6, 3.7
2.1, 2.2        3.5, 3.6, 3.7

更新

查看堆栈跟踪的最后一行:

File "/Users/omairbukhari/justads/backend/feeds/views.py" in update 738. 
     request_data = request.data.copy()

改为使用空切片:request_data = request.data[:]

如果这不是您的代码,那么您没有正确降级 django 的版本。

【讨论】:

  • 我已经检查了我的版本。这就是它所说的“列表索引必须是整数,而不是 str”
猜你喜欢
  • 2016-08-31
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多