多对多领域中的Django反向关系

时间:2020-09-19 07:04:18

标签: django api django-rest-framework django-serializer

我如何获得像波纹管这样的画廊回应。现在,galleryserializer返回仅包含id的images数组的响应。我无法获取图像的详细信息。

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 个答案:

答案 0 :(得分:1)

使用嵌套序列化

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