python - 列表对象没有属性副本
问题描述
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/ 'list' 对象的 AttributeError 没有属性 'copy'
追溯:
内部 39 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/django/core/handlers/exception.py”。response = get_response(request)
_legacy_get_response 249 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/django/core/handlers/base.py”。 response = self._get_response(request)
_get_response 187 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/django/core/handlers/base.py”。response = self.process_exception_by_middleware(e, request)
_get_response 185 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/django/core/handlers/base.py”。 response = Wrapped_callback(request, *callback_args, **callback_kwargs)
Wrapped_view 58 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/django/views/decorators/csrf.py”。返回 view_func(*args, **kwargs)
视图 83 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/rest_framework/viewsets.py”。 return self.dispatch(request, *args, **kwargs)
调度 477 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/rest_framework/views.py”。响应 = self.handle_exception(exc)
handle_exception 437 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/rest_framework/views.py”。self.raise_uncaught_exception(exc)
调度 474 中的文件“/Users/omairbukhari/env_justads/lib/python2.7/site-packages/rest_framework/views.py”。 response = handler(request, *args, **kwargs)
更新 738 中的文件“/Users/omairbukhari/justads/backend/feeds/views.py”。 request_data = request.data.copy()
解决方案
list.copy
在 Python 3.3 中引入。
您使用的是 Python 2.7,因此您应该将您正在使用的 django 版本降级(到1.11
):
来自Django 的文档:
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 的版本。
推荐阅读
- c# - 反射:动态获取类型并用于创建列表(错误:是一个变量但用作类型)
- arrays - 在静态数组中计算最小查询背后的逻辑是什么?
- typescript - 笑话:Vue TypeScript:无法解析具有隐式 .js 路径扩展名的转译 js 的相对路径导入
- node.js - 打字稿d.ts
- json - 在 CloudFormation Powershell 脚本中调用参数
- vb.net - VB.NET EntryPointNotFoundException
- c++ - 如果在大小范围内,C++ 从标准输入读取
- excel - 范围宏不起作用
- ubuntu - 无法在 127.0.0.1:6379 连接到 Redis:网络无法访问
- python-3.x - 我可以直接通过 Tweepy 访问用户的描述(简历)吗?