尝试设置一个扩展基础用户的自定义用户模型。一些用户将拥有登录信息,而另一些则没有,但我仍希望所有用户都已登录。我认为这就是错误所在。
在默认的Django模型中,他们被记录了,但现在有些用户只有IP地址和用户名。其他用户将拥有更多信息,如电子邮件等。
出现以下错误:
AttributeError: 'CustomUser' object has no attribute 'is_anonymous'
这是我的自定义用户类:
class MyUserManager(BaseUserManager):
def create_user(first_name, last_name, address1, state, zipcode, email, username, password):
user=self.model(
first_name = first_name,
last_name = last_name,
address1 = address1,
zipcode = zipcode,
state = state,
email=email,
username = username,
password = password
)
user.is_superuser = False
user.is_admin = False
user.is_staff = False
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, email, password=None, **extra_fields):
extra_fields.setdefault('is_superuser', False)
return self._create_user(email, password, **extra_fields)
def create_superuser(self, email, password, **extra_fields):
extra_fields.setdefault('is_superuser', True)
if extra_fields.get('is_superuser') is not True:
raise ValueError('Superuser must have is_superuser=True.')
return self._create_user(email, password, **extra_fields)
class CustomUser(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
first_name = models.CharField(max_length=25
)
last_name = models.CharField(max_length=25
)
address1 = models.CharField(null=True, max_length=100, blank=True)
zipcode = models.CharField(max_length=10, null=True,blank=True)
state = models.CharField(null=True, max_length=2, blank=True)
email = models.EmailField(max_length = 250)
username = models.CharField(max_length = 25)
password = models.CharField(max_length =25,
null=True)
objects=MyUserManager()
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['first_name', 'last_name', 'username', 'email', 'password', 'zipcode']
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
def __str__(self):
return f'{self.first_name} ({self.last_name}) ({self.email})'
我该如何让它工作?任何帮助都将是极好的!