Chcę się upewnić, że request.user może wystawić tylko żądanie POST, aby utworzyć temat forum, w którym jest auther. Z PUT i DELETE mogę to osiągnąć za pomocą has_object_permission
, ale z POST nie jestem w stanie tego zrobić, zgaduję, ponieważ obiekt nie został jeszcze utworzony.Django Rest obiektowe uprawnienia na poziomie obiektu 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
W jaki sposób podjąłbym się weryfikacji request.user == obj.author
w zapytaniach POST?
Masz 'author' polu na swojej serializatora, które starają się zapewnić, jest ustawiony do bieżącego użytkownika podczas cresting obiekt? Są lepsze sposoby na to, niż poprzez sprawdzenie uprawnień. –
tak, nie o to chodzi. Działa dobrze dla PUT i DELETE, ale z POST has_object_permission nie działa. – awwester
Przez "nie działa" masz na myśli "nie nazywa się", "powoduje błąd" lub "nigdy nie przechodzi"? Nie jest jasne, co próbujesz zrobić w swoim pytaniu i [pachnie jak problem XY] (http://meta.stackexchange.com/q/66377/159034). –