سلام
استاد توی این جلسه کلاس HasPostPermission رو برای LikeCreateAPIView توسعه دادن
طبق توضیحات استاد متد has_object_permission زمانی استفاده میشه که بخواهیم دسترسی به یک obj رو کنترل کنیم
و همچنین این permissionها داخل متد get_object بررسی میشن
def get_object(self):
...
self.check_object_permissions(self.request, obj)
return obj
سوالی که برا من پیش میاد اینه که ما وقتی داریم LikeCreateAPIView رو توسعه میدیم از generics.CreateAPIView استفاده میکنیم
و generics.CreateAPIView اصلا متد get_object رو فراخوانی نمیکنه که بخواد permissionهای ما رو چک کنه.
ایا استاد به اشتباه این متد رو برا این جا توسعه داده یا من دچار اشتباه شدم؟
ممنون میشم این سوال رو یا استاد در میون بذارید
class LikeCreateAPI(CreateAPIView):
queryset = Like.objects.all()
serializer_class = PostLikeSerializer
permission_classes = [IsAuthenticated, HasPostPermission]
def perform_create(self, serializer):
serializer.save(user=self.request.user)
class HasPostPermission(BasePermission):
def has_object_permission(self, request, view, obj):
relation_exists = Relation.objects.filter(from_user=request.user, to_user=obj.post.user).exists()
return bool(relation_exists or request.user == obj.post.user)