ЗАГРУЗКА ФАЙЛА 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'}