首页 > 解决方案 > 如何在 django REST 框架中返回模型的所有图像

问题描述

我正在尝试使用 REST API 为餐厅编写应用程序。我有一个如下模型:

# models.py
# =========================================================================
class Food(models.Model):
    food_id = models.IntegerField(primary_key=True, unique=True)
    name = models.CharField(max_length=30, null=False, blank=False)
    desc = models.TextField(max_length=200)
    price = models.IntegerField(null=False, blank=False)
    f_thumbnail = models.ImageField(upload_to='img/imgFood/')
    DDD_data = models.ImageField(upload_to='img/DDD_Food/')

    def __str__(self):
        return '%s %s' % (self.name, self.price)

当客户端发送对所有文件的请求时,我想Food使用 ListAPIView 向它提供该类的所有图像文件的列表。

我怎样才能弄清楚?

标签: djangodjango-models

解决方案


您可以创建一个ListFoodImagesViewwhich extends ListAPIView,例如:

from rest_framework import generics

class ListFoodImagesView(generics.ListAPIView):
    serializer_class = FoodImagesSerializer
    queryset = Food.objects.all()

并使用FoodImageSerializer仅序列化图像 url 的 a,例如:

from rest_framework import serializers

class FoodImageSerializer(serializers.ModelSerializer):
    image_url = serializers.SerializerMethodField()

    class Meta:
        model = Food
        fields = ('image_url', )

    def get_image_url(self, food):
        return food.DDD_data.url        

推荐阅读