7
Я хочу, чтобы request.user мог только выдать запрос POST для создания темы форума, в которой они являются авторами. С PUT и DELETE я могу добиться этого, используя has_object_permission
, но с POST я не могу этого сделать, я предполагаю, что объект еще не создан.Разрешение на уровне объекта Django Rest Framework на POST
class TopicPermission(IsAuthenticatedOrReadOnly):
"""
Any user should be able to read topics but only authenticated
users should be able to create new topics. An owner or moderator
should be able to update a discussion or delete.
"""
def has_object_permission(self, request, view, obj):
if request.method in SAFE_METHODS:
return True
# Instance must have an attribute named `author` or moderator
return obj.author == request.user or request.user.forum_moderator
Как бы идти о проверке request.user == obj.author
в запросах POST?
У вас есть 'author' поле на вашем сериализаторе, что вы пытаетесь обеспечить установлен для текущего пользователя, когда перехлест объект? Есть более эффективные способы сделать это, чем выполнить проверку разрешения. –
да, это не об этом. Он отлично работает для PUT и DELETE, но с POST has_object_permission не работает. – awwester
Под «не работает» вы имеете в виду, что «не называется», «вызывает ошибку» или «никогда не проходит»? Непонятно, что вы пытаетесь сделать в своем вопросе, и это [пахнет проблемой XY] (http://meta.stackexchange.com/q/66377/159034). –