Загрузка файла из Django Rest Framework говорит, что документ не отправлен - PullRequest
0 голосов
/ 22 декабря 2018

Когда я загружаю файл через модуль запросов, он говорит, что документ не отправлен

models.py :

class Apidocument(models.Model):
    iden = models.CharField(max_length=255)
    document = models.FileField(upload_to='media/documents')
    uploaded_at = models.DateTimeField(auto_now_add=True)

serializer.py :

class DataSerializer(serializers.ModelSerializer):
    document = serializers.FileField(max_length=None,use_url =True)
    class Meta():
        model = Apidocument
        fields = ('uploaded_at','document')

views.py :

class ApiViewSet(viewsets.ModelViewSet):
    queryset = Apidocument.objects.all().order_by('-uploaded_at')
    serializer_class = DataSerializer


files = {"file": ('b839', open('/home/user/b839.jpeg', 'rb'), 'multipart/form-data')}
resp = requests.post('http://localhost:8000/api/upload/', files=files)

1 Ответ

0 голосов
/ 22 декабря 2018

Ну, вы используете ModelSerializer, а затем определяете поле document на сериализаторе, я думаю, что указывать документ field на сериализаторе не обязательно, так как ModelSerializer должен его включать в любом случае.

Кроме того, поскольку вы используете имя поля в качестве document, для него требуется ключ документа в запросе, связанном с файлом (по крайней мере, так оно и есть в xhr).Таким образом, ваш объект запросов должен выглядеть примерно так:

files = {"document": ('b839', open('/home/user/b839.jpeg', 'rb'), 'multipart/form-data')}.

Надеюсь, это сработает.

...