Как реализовать различные разрешения в Django?

У меня есть модель оплаты с полями: date_created, comment, description, amount. Каждый платеж принадлежит пользователю.

class Payment(models.Model):
    author = models.ForeignKey('auth.User')
    amount = models.FloatField(max_length=10)
    description = models.CharField(max_length=128)
    created_date = models.DateTimeField(
            default=datetime.now())
    comment = models.TextField(max_length=256)

    def __str__(self):
        return self.description

Теперь мне нужно реализовать различные роли для пользователя: regular (может CRUD его платежи), manager (может CRUD пользователи), admin (может CRUD все). Таким образом, главный вопрос заключается в том, как реализовать эти роли для пользователей во время регистрации (далее это не может быть изменено). Я также должен иметь возможность установить эту роль во время регистрации через api (django Rest framework).

1 ответ

  1. Наконец, решил пользователь Django встроенные разрешения

    #e.g.
    content_type = ContentType.objects.get_for_model(User)
    permission = Permission.objects.get(codename='admin_can_manage_users')
    user.user_permissions.add(permission)