Как браузерный API DRF может загрузить файл и отправить вложенные данные JSON? - PullRequest
0 голосов
/ 02 января 2019

Я хотел бы использовать веб-API для разработчиков с возможностью просмотра, предоставляемый django-rest-framework , для взаимодействия с WritableNestedModelSerializer, который содержит как ImageField, так иnested Serializer.

Используя этот пример кода:

from django.db import models
from drf_writable_nested import WritableNestedModelSerializer
from rest_framework.serializers import ModelSerializer
from django.urls import include, path
from rest_framework import routers, viewsets


class House(models.Model):
    image = models.ImageField()


class Cat(models.Model):
    house = models.ForeignKey(House, related_name='cats', on_delete=models.CASCADE, null=True)
    name = models.CharField(max_length=50)


class CatSerializer(ModelSerializer):
    class Meta:
        model = Cat
        fields = '__all__'


class HouseSerializer(WritableNestedModelSerializer):
    cats = CatSerializer(many=True)

    class Meta:
        model = House
        fields = '__all__'


class HouseViewSet(viewsets.ModelViewSet):
    queryset = House.objects.all()
    serializer_class = HouseSerializer


router = routers.DefaultRouter()
router.register(r'houses', HouseViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

В этой версии пакетов Python:

$ pip freeze
Django==2.1.4
django-rest-framework==0.1.0
djangorestframework==3.9.0
drf-writable-nested==0.5.1
pytz==2018.7

HTML-форма не поддерживает вложенный JSONсериализация:

enter image description here

И форма необработанных данных не поддерживает отправку двоичных файлов:

enter image description here

...