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, который будет проверять роль кастомного пользователя

Вернуться на верх