簡體   English   中英

在 Django 中自定義用戶模型的用戶權限

[英]User permissions to custom user model in Django

我有自定義用戶模型:

class User(AbstractUser):
    """
    Our own User model. Made by overriding Django's own AbstractUser model.
    We need to define this as the main user model in settings.py with 
    variable AUTH_USER_MODEL *IMPORTANT* 
    """
    is_admin = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    email = models.EmailField(
        max_length=255,
        unique=True,
        verbose_name="email address"
    )
    institute = models.ForeignKey(
        Institute, on_delete=models.SET_NULL, null=True)

    objects = MyUserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    def __str__(self):
        return self.email

我的項目中有兩個用戶。 一個是超級管理員,另一個是管理員。 我已經為 admin 指定了模型:

class AdminUser(User):
    is_admin = False
    is_staff = True

    def __str__(self):
        return self.first_name+" "+self.last_name

    # Control model features
    class Meta:
        verbose_name = 'Admin User'
        verbose_name_plural = 'Admin Users'

現在我想從這個管理員用戶撤銷整個用戶模型的訪問權限。 這怎么可能實現? 我們將來會有更多的用戶類型。 它們將通過模型指定。

您可以通過在 Django 中使用組來實現這一點。

您的超級用戶將是您,您將擁有默認使用字段is_admin=True所有權限。 第二個用戶可以是一個簡單的 Staff 用戶,它是“Admins”組的成員,只需創建組並將所有權限分配給該組,除了添加、更改和刪除用戶的權限。

這樣就行了。

更新:如果您需要更復雜的案例,您可以使用應用程序django-groups-managerdjango-guardian因此您可以在樹中創建組,在那里您可以使用更多域驅動的權限規則。**

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM