我正在尝试自定义 django 的 AbstractUser。当我尝试重置username为None时,出现以下异常:
"django.core.exceptions.FieldDoesNotExist: User has no field named 'username'".\nRun Code Online (Sandbox Code Playgroud)\n这是我的代码:
\nclass UserManager(BaseUserManager):\n use_in_migrations = True\n\n def _create_user(self, email, password, **extra_fields):\n if not email:\n raise ValueError("L'adresse e-mail donn\xc3\xa9e doit etre definie")\n email = self.normalize_email(email)\n user = self.model(email=email, **extra_fields)\n user.set_password(password)\n user.save(using=self._db)\n return user\n\n def create_user(self, email, password, **extra_fields):\n extra_fields.setdefault("is_staff", False)\n extra_fields.setdefault("is_superuser", False)\n return self._create_user(email, password, **extra_fields)\n\n def create_superuser(self, email, password, **extra_fields):\n extra_fields.setdefault("is_staff", True)\n extra_fields.setdefault("is_superuser", True)\n\n if extra_fields.get("is_staff") is not True:\n raise ValueError("Superuser must have is_staff=True")\n if extra_fields.get("is_superuser") is not True:\n raise ValueError("Superuser must have is_superuser=True")\n return self._create_user(email, password, **extra_fields)\n\n\nclass User(AbstractUser):\n username = None\n email = models.EmailField('email adress', unique=True)\n telephone = models.CharField(max_length=20)\n REQUIRED_FIELDS = []\nRun Code Online (Sandbox Code Playgroud)\n我可以做什么来解决这个问题?
\n小智 12
如果您在项目中使用 django-allauth,也可能会导致这种情况。要解决此问题,您需要在 settings.py 中将 ACCOUNT_USER_MODEL_USERNAME_FIELD 定义为 None。请参阅此问题和allauth 文档以获取更多信息。
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
Run Code Online (Sandbox Code Playgroud)
USERNAME_FIELD您尚未在代码中设置值。必须将其设置为唯一标识用户实例的字段。AbstractUser将其设置为'username',因此您会收到错误。您可以将其设置为'email'解决您的问题:
class User(AbstractUser):
username = None
email = models.EmailField('email adress', unique=True)
telephone = models.CharField(max_length=20)
# set below value
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9712 次 |
| 最近记录: |