簡體   English   中英

'dict' object 沒有屬性 '_committed' 任何人都可以解釋為什么會發生此錯誤

[英]'dict' object has no attribute '_committed' can anyone explain why this error occurs

我從前端發送文件,我想在我使用 DRF 的數據庫中保存文件位置。 目前,我試圖只保存一個文件,但出現錯誤

“'dict' object 沒有屬性'_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 邏輯只保存多個文件:- 在我發送多個文件時的響應中,我發送的對象列表每個 object 都有我想要的值,這就是為什么我使用 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)

嘗試這樣的事情,

    const formData = new FormData();
    formData.append('file', file);

    const requestOptions = {
        method: "POST",
        body:formData
     };

意思是,嘗試以多種形式而不是 application/json 發送請求正文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM