Метод modelManager get_by_natural key изменяет USERNAME_FIELD, влияя на мою аутентификацию?
У меня есть пользовательская модель User, которая наследуется от AbstractBaseUser
, которая определяет поле username_field = email, так что пользователи будут входить в систему, используя email.
class User(AbstractBaseUser):
email = models.EmailField(verbose_name="Email", unique=True)
username = models.CharField(max_length=100, unique=True)
last_name = models.CharField(max_length=100, blank=True, null=True)
first_name = models.CharField(max_length=100, blank=True, null=True)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_admin = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_site_administrator = models.BooleanField(default=False)
is_developer = models.BooleanField(default=False)
is_project_manager = models.BooleanField(default=False)
last_login = models.DateTimeField(verbose_name="Last Login", auto_now=True)
create_on = models.DateTimeField(verbose_name="Date Created", default=timezone.now)
# So that we will be working primarily with email and not username
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ["username"]
objects = UserManager()
Как объекты = UserManager() и этот содержит метод get_by_natural_key следующим образом:
def get_by_natural_key(self, username):
return self.get(username=username)
Теперь для входа в систему используется не email, а имя пользователя. Обратите внимание, что userManager наследуется от BaseUserManager следующим образом class UserManager(BaseUserManager):
.
Кто-нибудь может объяснить мне, что здесь происходит.
Проблема возникает из-за наследования или из-за самой функции get_by_natural_key()?