Итак, я пишу свой первый проект с DRF, и у меня возникли проблемы с настройкой разрешений для моих наборов просмотра. У меня уже есть аутентификация, работающая с djangorestframework-jwt. В настоящее время у меня определено несколько разных ViewSet. Что я хотел бы сделать, так это позволить владельцу объекта модели вносить любые изменения, которые он хотел бы в этот объект, но не позволять всем остальным (кроме администраторов) даже просматривать объекты. По сути, мне нужен способ применения классов разрешений к определенным методам, чтобы разрешить только администраторам просматривать «список», владельцам - «обновлять, уничтожать и т. Д.», А аутентифицированным пользователям - «создавать». В настоящее время у меня есть что-то вроде этого:
class LinkViewSet(viewsets.ModelViewSet):
queryset = Link.objects.all()
serializer_class = LinkSerializer
с моделью
class Link(models.Model):
name = models.CharField(max_length=200)
url = models.URLField()
# another model with a OneToMany relationship
section = models.ForeignKey('homepage.LinkSection', related_name='links', on_delete=models.CASCADE
owner = models.ForeignKey('homepage.UserProfile'), related_name='links', on_delete=models.CASCADE)
и класс разрешений, который я хочу применить
class IsOwner(permissions.BasePermission):
def has_object_permissions(self, request, view, obj):
return obj.owner == request.user.userprofile
Я уверен, что этого можно достичь, написав полностью настраиваемые представления, но у меня есть интуиция, что есть более простой способ сделать это, тем более что это, по сути, последнее, что мне нужно сделать, чтобы закончить API. Спасибо за любую помощь и дайте мне знать, если вам понадобится дополнительная информация.
request.method
вhas_object_permission()
, например DjangoModelPermissions а> делает. - person kichik   schedule 26.08.2017