Я пытаюсь создать API, используя django RESTframework для 5-звездочной рейтинговой системы. API должен отображать список всех продуктов в домашнем URL, и для каждого продукта должна отображаться средняя оценка. При нажатии на эту ссылку должны быть зачислены все отзывы об этом конкретном продукте.
Я сделал свои модели, просмотры и файл serializers.py. Уровень каталога отображается:
project_rating
├── reviews
│ ./apps.py
│ ./tests.py
│ ./views.py
│ ./admin.py
│ ./models.py
│ ./migrations
├── manage.py
├── api
│ ./apps.py
│ ./tests.py
│ ./urls.py
│ ./views.py
│ ./admin.py
│ ./models.py
│ ./migrations
│ ./serializers.py
Мои отзывы / models.py выглядят так:
class product(models.Model):
title = models.CharField(max_length = 100)
description = models.TextField()
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
review = models.ForeignKey('feedback', on_delete=models.CASCADE, null=True, default = "NA")
def __str__(self):
return self.title
class feedback(models.Model):
SCORE_CHOICES = zip(range(6), range(6) )
user = models.CharField(max_length=50, null= True, default='anonymous user')
item = models.ForeignKey(product, on_delete=models.SET_NULL, null= True)
rating = models.PositiveSmallIntegerField(choices=SCORE_CHOICES, blank=False)
def __str__(self):
return 'Rating(Item ='+ str(self.item)+', Stars ='+ str(self.rating)+')'
api / serializers.py выглядит так:
class RatingSerializer(serializers.ModelSerializer):
class Meta:
model = models.feedback
fields=(
'id',
'user',
'rating',
)
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = models.product
fields=(
'id',
'title',
'description',
'review',
)
Мои api / views.py:
class ProductList(generics.ListCreateAPIView):
queryset= models.product.objects.all()
serializer_class=serializers.ProductSerializer
class ReviewList(generics.ListCreateAPIView):
queryset=models.feedback.objects.all()
serializer_class= serializers.RatingSerializer
API / urls.py:
urlpatterns = [
path('',views.ProductList.as_view()),
path('<int:pk>/', views.ReviewList.as_view()),
]
Проблема, с которой я сталкиваюсь:
Q. Мне нужно добавить URL в product_list (домашняя страница), чтобы связать все отзывы об этом продукте. Как добавить такой URL и сделать так, чтобы этот URL отображал только те отзывы, которые были сделаны для этого конкретного продукта?
Я пытался найти много доступных ответов в Интернете, но не смог решить мою проблему. Если этот вопрос излишний, пожалуйста, обратитесь к ссылкам, которые точно решают мою ситуацию.
Ссылка на полный код github: https://github.com/rjsu26/5-star-rating