[英]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-manager
或django-guardian
因此您可以在樹中創建組,在那里您可以使用更多域驅動的權限規則。**
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.