Обратная связь Django в поле «многие ко многим»

#django #api #django-rest-framework #django-serializer

#django #API #django-rest-framework #django-сериализатор

Вопрос:

как мне получить ответ галереи, как показано ниже. Теперь galleryserializer возвращает ответ с массивом изображений только с идентификаторами. Я не могу получить подробную информацию об изображениях.

ответ json:

 {
    "name": "New Gallery",
    "images": [
        {
             id: 1,
             image: 'url/path/to/image',
             alt_text: 'alt'
        },
        {
             id: 2,
             image: 'url/path/to/image1',
             alt_text: 'alt'
        },
    ]
}
  

Мой models.py файл:

 class GalleryImage(models.Model):
    image = models.ImageField(upload_to='gallery/')
    alt_text = models.CharField(max_length=300)
    created = models.DateTimeField(auto_now_add=True)

class Gallery(models.Model):
    name = models.CharField(max_length=30)
    slug = AutoSlugField(populate_from='name', unique_with='id')
    images = models.ManyToManyField(GalleryImage, related_name="galleryimages")
    created = models.DateTimeField(auto_now_add=True)

  

Мой serializers.py файл:

 class GalleryImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = GalleryImage
        exclude = '__all__'

class GallerySerializer(serializers.ModelSerializer):
    class Meta:
        model = Gallery
        fields = '__all__'

  

Ответ №1:

Используйте вложенную сериализацию

 class GallerySerializer(serializers.ModelSerializer):
    images = GalleryImageSerializer(many=True)
    class Meta:
        model = Gallery
        fields = '__all__'  

Комментарии:

1. Теперь я получил ошибку. Параметр исключения должен быть списком или кортежем. Получил str.

2. изменить exclude = '__all__' на fields = '__all__'