私は2つのモデルのレンタルとギャラリーを持っています。私のモデルはSerializers.py(少ないフィールドで短縮)このRentListAPIView内に画像フィールドを表示するにはどうすればいいですか?
Models.py
class Rental(models.Model):
ownerName = models.CharField(_("Owner's Name"),max_length=255, blank=True,null=True,
help_text=_("Owner's Full Name"))
renter = models.ForeignKey(User,null=True,blank=True)
email = models.CharField(max_length=120,blank=True,null=True)
phoneNumber = models.PositiveIntegerField(blank=False,null=True,
help_text=_("Phone number of contact person"))
listingName = models.CharField(_("Lisitng Name"), max_length=255, blank=False,null=True,
help_text=_("Title 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)
ように見える
class RentalListSerializer(ModelSerializer):
renter = SerializerMethodField()
# gallery = GalleryListSerializer()
class Meta:
model = Rental
def get_renter(self, obj):
return str(obj.renter.username)
class GalleryListSerializer(ModelSerializer):
class Meta:
model = Gallery
Views.py
class RentalListAPIView(ListAPIView):
# queryset = Rental.objects.all()
serializer_class = RentalListSerializer
filter_backends = [SearchFilter]
search_fields = ['place','city']
pagination_class = RentalPageNumberPagination
def get_queryset(self, *args, **kwargs):
# queryset_list = super(RentalListAPIView,self).get_queryset(*args, **kwargs)
queryset_list = Rental.objects.all()
query = self.request.GET.get('q') # this is a class based view so we need to use self
if query:
queryset_list = queryset_list.filter(
Q(place__icontains=query)|
Q(city__icontains=query)
).distinct()
return queryset_list
class GalleryListAPIView(ListAPIView):
# queryset = Rental.objects.all()
serializer_class = GalleryListSerializer
pagination_class = RentalPageNumberPagination
def get_queryset(self, *args, **kwargs):
queryset_list = Gallery.objects.all()
return queryset_list
MY APIの設計は、この
のように見えますが、私はあまりにもイメージフィールドを必要とし、それぞれの家賃はこの
だけです'gallery = GalleryListSerializer()'が追加されていません。 – AKS
私はそれを試みた。 GalleryListSerializerは定義されていません。 GalleryListSerializerクラスをRentListSerializerの一番上から一番上に移動すると、/ api/rentals/ でAttributeErrorのエラーが発生します。 'RelatedManager'オブジェクトには 'rental'という属性はありません – pri
私の答えを見てください。それを下から上に移動する必要があります。 – AKS