Ожидался экземпляр 'Image', получен OrderedDict([('text', 'First Image'), ('gallery', <Gallery: First Gallery>)])

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

Но когда я нажимаю на Post из api admin, он показывает

Ожидался экземпляр 'Image', получен OrderedDict([('text', 'First Image'), ('gallery', <Gallery: First Gallery>)]))

Я думаю, что проблема в функции create(). Я также пробовал модифицировать ее, но она по-прежнему не работает и показывает ту же ошибку.

models.py

class Gallery(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=300)

class Image(models.Model):
    gallery = models.ForeignKey(Gallery, on_delete=models.CASCADE, related_name="images")
    text = models.CharField(max_length=300)

serializers.py

class ImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = Image
        fields = "__all__"

class GallerySerializer(serializers.ModelSerializer):
    images = ImageSerializer(many=True)

    class Meta:
        model = Gallery
        fields = "__all__"

    def create(self, validated_data):
        created = Gallery.objects.create(poll=1)
        created.images.set(validated_data['images'])
        return created

мой ответ, который я сохраняю

{
    title: "First Gallery",
    images : [
        {
            "gallery": 1,
            "text": "First Image"
        }
    ]
}

И когда я печатаю validated_data как :-:

print(validated_data['images'])

тогда он показывает

[OrderedDict([('text', 'First Image'), ('gallery', <Gallery: First Gallery>)]), OrderedDict([('text', 'Second Image'), ('gallery', <Gallery: First Gallery>)]), OrderedDict([('text', 'Third Image'), ('gallery', <Gallery: First Gallery>)]), OrderedDict([('text', 'Fourth Image'), ('gallery', <Gallery: First Gallery>)])]

.

Я только начал учиться django-rest-framework

Любая помощь будет очень признательна. Thank You in Advance.

Вернуться на верх