Полномочия для action (Django Rest Framework)

Всем привет! Есть объект Post, для которого могут быть применены Actions. В моем случае, это система лайкинга определенного поста. Реализовывал ее по ответу в одном из моих вопросов -

https://ru.stackoverflow.com/questions/994532/Как-реализовать-систему-лайкинга-на-постах-и-в-дальнейшем-обрабатывать-их

На ViewSet'е у меня стоит полномочие, что если author не является request.user, то мы не разрешаем POST запрос. Но как в итоге "ставить лайк другим"?

К примеру, вот URL - posts/39/like. Это считается POST запросом, но меня выкидывает на 403 ошибку - "detail": "У вас нет прав для выполнения этой операции."

Как поставить отдельные права/полномочия для actions у объекта?


Ответы (1 шт):

Автор решения: TheGreatVY

Пришло в голову такое решение - Так как это detail url для объекта Post, то тут по сути и негде делать POST запросы. Только если PUT или Delete.

Добавил в полномочия проверку на POST запрос - просто return True. А на PUT и Delete проверка является ли request.user == object.author.

→ Ссылка