在rest api中只显示一个图像而不是多个图像

时间:2016-04-21 09:08:56

标签: python django rest django-rest-framework

我有一个模型,其中有2个表。一个是包含租赁信息的租赁,另一个是与租赁表相关联的Gallery表,每个租金可以有多个图像。我使用Django Rest Framework设计了一个API。我的API会显示租借信息以及图片,但只显示一张图片,而不是与租金相关的所有图片。

my models.py

class Rental(models.Model):
    listingName =  models.CharField(_("Lisitng Name"), max_length=255, blank=False,null=True,
        help_text=_("Title of the rental space"))
    slug = models.SlugField(unique=True,blank=True,null=True)
    summary = models.TextField(max_length=500, blank=True,null=True,help_text=_("Description of the rental space"))


class Gallery(models.Model):
    rental = models.ForeignKey('Rental', null=True, on_delete=models.CASCADE,verbose_name=_('Rental'), related_name="gallery")
    image = models.ImageField(blank=True,upload_to='upload/',null=True)

views.py

class RentalSerializer(serializers.ModelSerializer):
    class Meta:
        model = Rental
        field = ('id','ownerName','listingName')

class GallerySerializer(serializers.ModelSerializer):
    rental = RentalSerializer()
    class Meta:
        model = Gallery
        field = ('id','image','rental')

class GalleryListAPIView(ListCreateAPIView):
    queryset = Gallery.objects.all()
    serializer_class = GallerySerializer
    # filter_fields = ('listingName')

我想显示所有租借信息及其图像(如果多个图像显示所有图像)。我得到的是如果我租用5张图像,那么5次出租信息显示5个不同的图像。

在设计API方面我做错了什么?

1 个答案:

答案 0 :(得分:2)

edit :

class RentalSerializer(serializers.ModelSerializer):
    rental = serializers.RelatedField(source='Rental' , read_only=True , many=True)
    class Meta:
        model = Rental
        field = ('id','ownerName','listingName','rental')

我没有测试过这个。