Я решил эту проблему, переопределив метод create и сделав изображения доступными только для чтения:
class AnimalSerializer(serializers.HyperlinkedModelSerializer):
images = AnimalImageSerializer(many=True, read_only=True)
def create(self, validated_data):
images_data = self.context['request'].FILES
animal = Animal.objects.create(
slug=validated_data.get('slug', 'default-slug')
)
for image_data in images_data.getlist('file'):
AnimalImage.objects.create(animal=animal, image=image_data)
class Meta:
model = Animal
lookup_field = 'slug'
extra_kwargs = {
{'url': {'lookup_field': 'slug'}
}
fields = ('slug', 'images', )
Также убедитесь, что вы удалили JsonParser из ModelViewSet
JSONParser
Убедитесь, что если вы используете Postman, вы используете только тип данных формы body
Также убедитесь, что вы добавили все поля, необходимые для создания вашей модели, Животное
Не добавляйте поле изображений и делайте его доступным только для чтения в сериализаторе
Создайте новое поле и назовите его file и сделайте его типом File вместо Text.
Имя поля должно быть file , потому что вы будете использовать getlist ('file'). Имя должно быть таким же. Это то, что испортило меня.