2016-04-21 80 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這樣說到在 –

相關問題