Permissions. Django REST Framework
Изучаю Django и Django REST Framework. Есть две модели. Как реализовать чтобы статус модели Post мог изменять только Support?
class CustomUser(AbstractUser):
USER = "US"
SUPPORT = "SP"
ROLE = [
(USER, "User"),
(SUPPORT, "Support"),
]
role = models.CharField(
choices=ROLE,
max_length=2,
verbose_name="Role",
)
class Post(models.Model):
SOLVED = "SD"
UNRESOLVED = "UNSD"
FROZEN = "FR"
STATUS = [
(SOLVED, "Solved"),
(UNRESOLVED, "Unresolved"),
(FROZEN, "Frozen"),
]
title = models.CharField(
max_length=255,
verbose_name="Title",
)
text = models.TextField(
verbose_name="Text of post."
)
author = models.ForeignKey(
CustomUser,
related_name="posts",
on_delete=models.CASCADE,
)
status = models.CharField(
choices=STATUS,
max_length=5,
default="SD",
verbose_name="Status",
)
created = models.DateTimeField(
auto_now_add=True,
verbose_name="Date of create post.",
)
Можно будет создать новый класс для роля пользователя, что то типо в это роде
from rest_framework import permissions
class Support(permissions.Basepermissions):
def permission(self, request, view):
# и так далее
Затем же для изменения только поста можно создать отдельный сериализер, в котором будет отображаться статус. А во вьюшках можно добавить
permission_classes = [Support]
Речь о Dlango-Rest-Framework
Смотря как Вы собираетесь позволять кастомному пользователю менять данные. Если это будет что-то на подобие отправки request типа ( site.com/pk_of_post/change-status ) , тогда можно в функции представления, которая отвечает за этот вопрос прописать def get_premission( self ): , и написать отдельный permission, который будет проверять роль кастомного пользователя