Как я могу создать несколько объектов в одном запросе? В котором каждый объект имеет файловое поле - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь создать несколько объектов документов, когда я отправляю запрос без файла, он создает несколько объектов, но я не знаю, как отправить несколько объектов с filefiled из 'form-data' почтальона или из необработанных данных в формате json. Пожалуйста, предложите мне, что я могу сделать для этого.

Моя модель документа:

class Document(models.Model):
    employee = models.ForeignKey(EmployeeInfo, on_delete = models.CASCADE)
    document = models.CharField(max_length=255, help_text='passport')
    date_added = models.DateField()
    valid_until = models.DateField(null = True, blank = True)
    detail = models.TextField(null=True, blank=True)
    attachment = models.FileField(upload_to='attachments', null=True, blank=True)

, для этого мое мнение:

class DocumentAPICreateView(CreateAPIView):
    serializer_class = DocumentSerializer
    permission_classes = [IsAuthenticated]

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data, many = True)
        if serializer.is_valid():
            self.perform_create(serializer)            
            headers = self.get_success_headers(serializer.data)
            response = create_response(True,data = serializer.data)        
            return Response(response, status=status.HTTP_201_CREATED, headers=headers)
        else:
            response =  create_response(False, err_name = serializer._errors)
            return Response(response, status = status.HTTP_400_BAD_REQUEST)

при отправке данных без вложение работает так:

[{

    "employee":38,
    "document":"Trial2",
    "date_added":"2019-12-10"
},
{

    "employee":38,
    "document":"Trial3",
    "date_added":"2019-12-10"
}]

Сериализатор для этого:

class DocumentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Document
        fields = '__all__'

Как я могу отправить список объектов с полем вложения?

...