首页 > 解决方案 > '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)

标签: pythondjango-modelsdjango-rest-frameworkdjango-viewsdjango-serializer

解决方案


推荐阅读