2016-04-21 73 views
0

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

我的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时做了什么错误?

回答

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') 

我还没有测试过这个。

+0

我必须在GallerySerializer或RentalSerializer中添加吗?我遇到以下错误AssertionError:关系字段必须提供'queryset'参数,或者设置read_only ='True'。 – milan

+0

租金= serializers.RelatedField(来源= '租赁',READ_ONLY =真,许多= TRUE) 或 租金= serializers.RelatedField(READ_ONLY =真,许多= TRUE) –

+0

你继承Rentalserializer在GallarySerializer这样说到在 –