Вопрос относительно объекта, получающего сериализацию в Django rest
Здесь у меня простое сомнение, в котором я полностью запутался. У меня есть модель ReviewsRatings
для отображения отзывов на основе каждого продукта. И я создал сериализатор модели ReviewSerilaizer
. В представлениях я передаю этот экземпляр ReviewsRatings
в ReviewSerilaizer
class ShowReviews(APIView):
def get(self, request, *args, **kwargs):
product_slug = self.kwargs["product_slug"]
reviews = ReviewRatings.objects.filter(user=request.user, product__slug=product_slug)
if not reviews:
return Response([])
serializer = ReviewSerializer(reviews, many=True, context={'request':request})
return Response(serializer.data, status=status.HTTP_200_OK)
#Serializer
class ReviewSerializer(ModelSerializer):
user = SerializerMethodField()
class Meta:
model = ReviewRatings
fields = [
"user",
"rating",
"review",
"created_at",
"updated_at",
]
def get_user(self, obj):
return f"{obj.user.first_name} {obj.user.last_name}"
Итак, я сомневаюсь в том, что в def get_user(self, obj)
obj
это product object
, который я получаю. И в представлениях я фильтрую user = request.user
вместе с product__slug=product_slug
. Так почему же я не получаю user object
, а получаю Products object
Вот модели.
class ReviewRatings(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)
product = models.ForeignKey(Products, on_delete=models.CASCADE)
rating = models.FloatField(validators=[MinValueValidator(0), MaxValueValidator(5)])
created_at = models.DateField(auto_now_add=True)
review = models.CharField(max_length=500, null=True)
updated_at = models.DateField(auto_now=True)
class Meta:
verbose_name_plural = "Reviews & Ratings"
def __str__(self):
return self.product.product_name
Я не знаю, это тупой вопрос или я задал его неправильно. Но из-за этого я в замешательстве.