使用 AbstractUser 的 Django 自定义用户

Django custom user with AbstractUser

from django.contrib.auth import get_user_model
from django.contrib.auth.models import AbstractUser

class MyUser(AbstractUser):
    pass

class Landlord(models.Model):
    user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE)
    #other fields
    def __str__(self):
        # **Error is here**
        return self.user.email

当我使用用户的电子邮件字段时出现此错误:"Instance of 'OneToOneField' has no 'email' member"

错误的原因是什么?(以及AbstractUser中有哪些字段class?) 我该如何修复错误。

您应该确保在 settings.py 文件中指定您的用户 class,例如

AUTH_USER_MODEL = 'appname.MyUser'

appname 替换为您的应用名称。

或者您使用 MyUser 而不是 get_user_model()

我使用的是 AbstractBaseUser 而不是 AbstractUser,但问题并未出现。通过阅读 django.contrib.auth.models 的代码,您还可以了解哪些字段已经实现以及如何实现。可以通过按住控制键并单击导入地址来完成。