first commit
This commit is contained in:
34
reviews/views.py
Normal file
34
reviews/views.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from rest_framework import generics, permissions, status
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from .models import Rating
|
||||
from .serializers import RatingSerializer
|
||||
|
||||
class CreateRatingView(generics.CreateAPIView):
|
||||
serializer_class = RatingSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def perform_create(self, serializer):
|
||||
# Serializer'ın create metodunda user ve content_type işlemleri yapılıyor
|
||||
serializer.save()
|
||||
|
||||
class ListRatingsView(APIView):
|
||||
"""
|
||||
Belirli bir model ve ID için yorumları listeler.
|
||||
Örn: /api/v1/reviews/list/?model=product&id=1
|
||||
"""
|
||||
def get(self, request):
|
||||
model_name = request.query_params.get('model')
|
||||
object_id = request.query_params.get('id')
|
||||
|
||||
if not model_name or not object_id:
|
||||
return Response({"error": "model ve id parametreleri gereklidir."}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
content_type = ContentType.objects.get(model=model_name.lower())
|
||||
ratings = Rating.objects.filter(content_type=content_type, object_id=object_id)
|
||||
serializer = RatingSerializer(ratings, many=True)
|
||||
return Response(serializer.data)
|
||||
except ContentType.DoesNotExist:
|
||||
return Response({"error": "Model bulunamadı."}, status=status.HTTP_404_NOT_FOUND)
|
||||
Reference in New Issue
Block a user