簡體   English   中英

Django 具有​​不同超級用戶權限和角色的管理站點

[英]Django Admin site with different Superuser permissions and roles

除了可以訪問項目中所有應用程序和所有權限的默認超級用戶“我想創建另外兩種類型的超級用戶,制造商能夠在所有應用程序上執行所有 CRUD 操作,而無需在 django 管理員的數據庫中執行,並且檢查者必須查看一個表“操作”來批准或拒絕這些操作。

  1. 是超級用戶 = True
  2. is_superuser with is_maker = True
  3. is_superuser with is_checker = True

如何在 admin.py Django 管理站點面板中檢查用戶登錄以控制其他內容?

模型.py

class BlogAdmin(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    is_maker = models.BooleanField(blank=True, null=True, default=False)
    is_checker = models.BooleanField(blank=True, null=True, default=False)

class Operation(models.Model):
    name = models.CharField(max_length=255, blank=True, null=True)
    model_name = models.ForeignKey(ContentType, blank=True, null=True,                             on_delete=models.SET_NULL)
    old_value = models.TextField(default='', null=True, blank=True)
    new_value = models.TextField(default='', null=True, blank=True)
    rejection_reason = models.TextField(null=True, blank=True, default='')
    status = models.CharField(choices=STATUS_CHOICES, max_length=50, blank=True, null=True, default=STATUS_PENDING)
    created_by = models.ForeignKey(User, blank=True, null=True, db_column='created_by', on_delete=models.CASCADE)

您必須以這種方式覆蓋 django 附帶的默認 auth-user 表

from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin

class User(AbstractBaseUser, PermissionsMixin):
   name = models.CharField(max_length=50, blank=True, null=True)
   username = models.CharField(max_length=100, unique=True)
   email = models.EmailField(max_length=100, blank=True, null=True)
   gender = models.CharField(max_length=15, blank=True, null=True)
   phone_number = models.CharField(max_length=50, unique=True)
   dob = models.DateField(blank=True,null=True)
   .
   #include everything you needed in user table
   .
   .
   is_maker = models.BooleanField(default=False)
   is_checker = models.BooleanField(default=False)
   .
   is_admin = models.BooleanField(default=False)
   is_staff = models.BooleanField(default=False)
   is_active = models.BooleanField(default=False)
   is_superuser = models.BooleanField(default=False)
   password = models.CharField(('password'), max_length=512 , blank=True, null=True)

您可以在此處查看有關替換默認用戶表的更多信息, 替換自定義用戶 model

暫無
暫無

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

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