Невозможно получить доступ к полям абстрактной модели пользователя в Django
У меня есть абстрактная модель пользователя следующего вида:
class MyAccountManager(BaseUserManager):
"""
Class to adjust the base user manager
"""
def create_user(self, email, username, password=None):
if not email:
raise ValueError("Users must have an email address")
user = self.model(
email=self.normalize_email(email),
username=username,
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, username, password):
user = self.create_user(
email=self.normalize_email(email),
username=username,
password=password,
)
user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.is_active = True
user.company = None
user.cashpool = None
user.save(using=self._db)
return user
class User(AbstractBaseUser):
"""
Main User model, inherits from AbstractBaseUser
"""
# Meta
email = models.EmailField(verbose_name='email', max_length=60, unique=True)
username = models.CharField(max_length=40, unique=True) # equals to email
date_joined = models.DateTimeField(verbose_name='date joined', auto_now_add=True)
last_login = models.DateTimeField(verbose_name='last login', auto_now=True)
# Relations
company = models.ForeignKey(Company, on_delete=models.CASCADE, null=True)
cashpool = models.ForeignKey(Cashpool, on_delete=models.CASCADE, null=True)
# Booleans
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
# Manager
objects = MyAccountManager()
# Use Email as login
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
def __str__(self):
return self.username
def has_perm(self, perm, obj=None):
return self.is_admin
def has_module_perms(self, app_label):
return True
def get_full_name(self):
return f'{self.username}'
Теперь в представлении я не могу получить доступ к полю company, например:
def test(request):
company = request.user.company
..
# settings.py
# Custom User Model
AUTH_USER_MODEL = "user.User"
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.AllowAllUsersModelBackend',
'applications.user.backends.CaseInsensitiveModelBackend'
)
почему?