我正在构建一个具有通过 Django Groups 定义的多个角色的应用程序。 我从一个自定义用户模型开始,定义如下。
我发现在使用自定义用户模型时使用的组和权限存在奇怪的差异,就像继承缺失了一些东西。
我想使用自定义用户模型,所以我不使用用户名,但我的应用程序中还需要多个组和权限。
from django.db import models
from django.contrib.auth.models import AbstractUser, AbstractBaseUser, BaseUserManager, PermissionsMixin
import random
import string
from slugify import slugify
# Create your models here.
class MyAccountManager(BaseUserManager):
def create_user(self, email, password=None):
if not email:
raise ValueError("You must have an email address")
user = self.model(
email=self.normalize_email(email),
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password):
user = self.create_user(
email=self.normalize_email(email),
)
user.set_password(password)
user.is_admin=True
user.is_staff=True
user.is_superuser=True
user.save(using=self._db)
return user
#custom user account model
class User_Account(AbstractUser):
email = models.EmailField(verbose_name='email', max_length=60, unique = True)
date_joined = models.DateTimeField(verbose_name="Date Joined", auto_now_add=True)
last_login = models.DateTimeField(verbose_name="Last Login", auto_now=True)
username = models.CharField(max_length=100, null=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = MyAccountManager()
def __str__(self):
return self.email
当我使用自定义用户模型创建新组时,该组会自动分配给所有已创建的用户。我以编程方式和通过 Django Admin 重现了这种行为。 当我使用默认用户模型时,组创建不会自动将组分配给所有用户。 我还发现,当使用自定义用户模型时,用户的 Django Admin 是不一样的(组和权限分配字段不完整 - 下面的屏幕截图) Weird incomplete Django Admin interface with groups and permissions missing the available fields
Normal Django Admin interface with group and permission assignment as expected - default user model
最佳答案
我设法在管理面板中解决了这个问题。看来是Admin类错误导致的视觉渲染问题。
错误是由以下原因引起的:
filter_horizontal = ()
list_filter = ()
fieldsets = ()
我实际上已经在上面的类中添加了正确的参数,但忘记注释掉/删除这些行。注释掉后可以正常工作。
关于python - 使用自定义用户模型时缺少组和权限分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62871961/