如何在Django中实现不同的权限?

时间:2017-01-17 09:56:55

标签: django django-rest-framework

我的模型付款包含字段: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

现在我需要为User实现不同的角色:常规(可以CRUD他的付款),经理(可以CRUD用户),管理员(可以CRUD一切)。因此,主要问题是如何在注册期间为用户实现此角色(进一步无法更改)。我还需要能够在注册期间通过api(django rest framework)设置此角色。

1 个答案:

答案 0 :(得分:0)

最后决定使用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)