Я создаю приложение с несколькими ролями, определенными через Django Группы. Я начал с пользовательской модели пользователя, определенной ниже.
Я вижу странную разницу в группах и разрешениях, используемых при использовании пользовательской модели, например, при наследовании чего-то не хватает.
Я хотел бы использовать настраиваемую модель пользователя, поэтому я не использую имя пользователя, но мне также нужно несколько групп и разрешений в моем приложении.
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. Когда я использую модель пользователя по умолчанию, создание группы не назначает группы всем пользователям автоматически. Я также обнаружил, что при использовании пользовательской модели Django администратор для пользователей не такой же (поля назначения групп и разрешений не заполнены - снимки экрана ниже) Странно неполно Django Интерфейс администратора с отсутствующими группами и разрешениями доступные поля
Нормальный Django Интерфейс администратора с назначением групп и разрешений, как ожидалось - модель пользователя по умолчанию