繁体   English   中英

在 _validate_username AttributeError: 'Manager' object has no attribute 'get_by_natural_key' 错误

[英]in _validate_username AttributeError: 'Manager' object has no attribute 'get_by_natural_key' error

model.py

from django.db import models
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
from .managers import UserAccountManager
        
class UserAccount(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(
        max_length=255,
        unique=True,
        # null=False,
        # blank=False,
        verbose_name="email",
    )
    name = models.CharField(max_length=255)
            
    is_active=models.BooleanField(
        default=True,
        )
    is_staff=models.BooleanField(
        default=False,
        )
    is_admin=models.BooleanField(
        default=False,
        )
    created_at=models.DateTimeField(auto_now_add=True)
        
    objects: UserAccountManager()
        
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['name']
           
    def __str__(self):
       return self.email
    

管理者.py

'''

从 django.contrib.auth.models 导入 BaseUserManager

class UserAccountManager(BaseUserManager): def create_user(self, email, name, password=None): """Creates and saves a User with the given email, name and password.""" if not email: raise ValueError('Users must有一个 email 地址')

    email=self.normalize_email(email)
    email = email.lower()
    
    user = self.model(
        email=email,
        name=name
    )
   
    user.set_password(password)
    user.save(using=self._db)
    return user
    
def create_admin(self, email, name, password=None):
    """
    Creates and saves a superuser with the given email, name and password.
    """
    user = self.create_user(email, name, password)
    user.is_admin = True
    user.is_staff = True
    user.save(using=self._db)
    return user
        
def create_superuser(self, email, name, password=None):
    """
    Creates and saves a superuser with the given email, name and password.
    """
    user = self.create_user(email, name, password)
    user.is_staff = True
    user.is_admin = True
    user.is_superuser = True
    user.save(using=self._db)
    return user

'''

您注释了objects ,您没有将其设置为UserAccountManager() object,确实:

class UserAccount(AbstractBaseUser, PermissionsMixin):
    # …
    #       🖟 use equal sign (=)
    objects = UserAccountManager()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM