ЗАГРУЗКА ФАЙЛА DRF ВО ВЛОЖЕННОМ СЕРИАЛИЗАТОРЕ

У меня есть три модели company, company_contact, company_logo, где я должен вставить данные в три таблицы одновременно. я могу загрузить компанию и company_contact, но не логотип компании. DRF сам удаляет вложенный файл сериализатора. Пока я вижу данные в request.data, но когда я вставляю их в сериализатор, он автоматически удаляет это поле.

вот мои сериализаторы

class CompanySerializer(serializers.ModelSerializer):

    company_contact = CompanyContactDetailsGet(many=True,required=False)

    company_logo_details = CompanyLogoGet(many=True,required=False) 
  
    class Meta:
        model = company_details
        fields = ('id','company_name','company_address','company_email','company_contact','company_logo_details')

    def create(self,validated_data):
        print("company_data",validated_data)        
        company_contact_no = validated_data.pop('company_contact')
        print("company_contact",company_contact_no)
        # company_logo_data = validated_data.pop('company_logo_details')
        with transaction.atomic():
            company = company_details.objects.create(**validated_data)
            # company_logo.objects.filter(Q(is_deleted_flag='n') | Q(company=company)).update(is_deleted_flag='y')        
            # for data in company_logo_data:
            #     companyLogo = company_logo.objects.create(company=company,**company_logo_data)

            for contact in company_contact_no:
                print("contactsss",contact,company)
                # contact['company'] = company
                company_contact_details.objects.create(company=company,**contact)
            
        return validated_data

и вот мой views.py

@api_view(['POST'])
# @parser_classes([MultiPartParser])
def add_company_all(request):    
    serializer = CompanySerializer(data=request.data)
    if serializer.is_valid():       
        serializer.save()
        result = {
            'data':serializer.data,
            'msg':"Company Details Added Successfully!!"
        }      
        return Response(result,status=status.HTTP_200_OK)
    result = {
            'data':serializer.errors,
            'msg':"invalid data!!"
        }
    return Response(result,status=status.HTTP_400_BAD_REQUEST)

вот данные, которые приходят в запросе в views.py

<QueryDict: {'company_name': ['new company'], 'company_address': ['new baneshwor'], 'company_email': ['new@gmail.com'], "comapny_contact[0]['company_contact_no']": ['9867543450'], "company_logo_details[0]['company_logo']": [<InMemoryUploadedFile: 2016-08-27-10-59-56-187.jpg (image/jpeg)>]}>

вот данные, которые идут в сериализаторы

company_data {'company_name': 'new company', 'company_address': 'new baneshwor', 'company_email': 'new@gmail.com'}

Вернуться на верх