python - 'dict' 对象没有属性 '_committed' 谁能解释为什么会发生这个错误
问题描述
我正在从前端发送文件,并且我想将文件位置保存在使用 DRF 的数据库中。目前,我正在尝试仅保存一个文件,但出现错误
“'dict'对象没有属性'_committed'”任何人都可以给我一些关于我应该做什么的建议吗?我要存档的请求正文:-
{'id': "Please provide Site Contact person's Name", 'service': {'id': 3, 'service_name': 'Site
Survey', 'cost_per_kw': 1, 'min_size': 101, 'upto_size': 10000, 'tat': 5, 'creation_date':
None}, 'question': 3, 'creation_date': None, 'real_estate': 0, 'answer': 'VIkrant Patil',
'attachement': [{'name': 'Vikrant Patil - Offer Letter (1).pdf', 'size': 172518, 'url':
'blob:http://localhost:8000/cad9de5d-a12b-41a2-90f7-38deff67fd0f', '_file': {}}], 'project':
189}
我只保存一个文件的 view.py 逻辑:-
class ServiceProjectAnswerViewSet(viewsets.ModelViewSet):
model = ServiceProjectAnswer
serializer_class = ServiceProjectAnswerSerializer
# parser_classes = (MultiPartParser, FormParser)
def create(self, request, *args, **kwargs):
print(request.data)
instance = None
answers = request.data.copy()
data = {}
attachements = answers['attachement']
print(attachements[0])
data['answer'] = answers['answer']
data['project'] = answers['project']
data['question'] = answers['question']
serializer = self.get_serializer(data=data)
if serializer.is_valid(raise_exception=True):
try:
instance = serializer.save()
# for attachement in attachements:
AnswerAttachments.objects.create(
answer = instance,
# attachement = attachement
attachement = attachements[0]
)
except Exception as e:
print(e)
return Response(str(e), status=400)
return Response(serializer.data, status=201)
我的 view.py 仅保存多个文件的逻辑:- 在我发送多个文件时,我正在发送对象列表,每个对象都有我想要的值,这就是我使用 for 循环进行迭代的原因。
def create(self, request, *args, **kwargs):
instance = None
print(request.data)
answers = request.data.copy()
for answer in answers:
data = {}
attachements = answer['attachement']
print(attachements,"attachement")
data['answer'] = answer['answer']
data['project'] = answer['project']
data['question'] = answer['question']
print(data,"data")
serializer = self.get_serializer(data=data)
if serializer.is_valid(raise_exception=True):
try:
instance=serializer.save()
for attachement in attachements:
print(attachement)
# attach = {}
# attach['name'] = attachement['name']
# attach['size'] = attachement['size']
# attach['url'] = attachement['url']
print(type(attachement))
AnswerAttachments.objects.create(
answer=instance,
attachement=attachement
)
except Exception as e:
print(e)
return Response(str(e), status=400)
else:
return Response({'message': ('Failed to save answers')}, status=400)
return Response('Answers are saved successfully!!', status=200)
解决方案
推荐阅读
- iis - 无法读取配置部分“webFarms”,因为它缺少部分声明
- c# - MainActivity Xamarin.Forms 中的 MissingMethodException
- flutter - Dart:检查对象是否实现接口
- woocommerce - 将 WooCommerce 中的 _variation_description 带入 ShipStation
- php - 如何为 WP 类别创建过滤器?
- api - 是否建议将 HTTP 406 用于“不合格的参与者”情况?
- javascript - 将键名更改为嵌套 JSON 的键值结构
- javascript - 节点中 XMLHttpRequest 的默认安装不起作用?
- python - Python:有没有一种简单的方法来处理列表/数组值函数的组件函数?
- python-3.x - 如何使用 Selenium 和 Python 从标签标签中提取部分文本信息