• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Django继承AbstractUser和AbstractBaseUser时迁移问题

python 搞java代码 3年前 (2022-05-21) 16次浏览 已收录 0个评论
<code class="language-bash">(DRF) ale@ubuntu:~/project/Aley$ <a href="https://www.gaodaima.com/tag/py" title="查看更多关于py的文章" target="_blank">py</a>thon <a href="https://www.gaodaima.com/tag/manage" title="查看更多关于manage的文章" target="_blank">manage</a>.py makemigrations users
Traceback (most recent call last):
  File "manage.py", <a href="https://www.gaodaima.com/tag/line" title="查看更多关于line的文章" target="_blank">line</a> 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/management/base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/management/base.py", line 368, in execute
    self.check()
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/management/base.py", line 396, in check
    databases=databases,
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/checks/registry.py", line 70, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/contrib/auth/checks.py", line 39, in check_user_model
    if cls.USERNAME_FIELD in cls.REQUIRED_FIELDS:
AttributeError: type object "User" has no attribute "USERNAME_FIELD"

</code>

www#gaodaima.com来源gao@!dai!ma.com搞$$代^@码网搞代码

当Django迁移模型时报304错误,解决方法:

​ 当你的继承AbstractUser类时,会使用django的用户认证,需要在项目的setting.py 中加入AUTH_USER_MODEL=”app.model”

<code class="language-python"># 用户认证
AUTH_USER_MODEL = "users.User"
</code>

——————————————————————————————————————————————————

<code class="language-bash">(DRF) ale@ubuntu:~/project/Aley$ python manage.py makemigrations users
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/management/base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/management/base.py", line 368, in execute
    self.check()
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/management/base.py", line 396, in check
    databases=databases,
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/core/checks/registry.py", line 70, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "/home/ale/Envs/DRF/lib/python3.6/site-packages/django/contrib/auth/checks.py", line 39, in check_user_model
    if cls.USERNAME_FIELD in cls.REQUIRED_FIELDS:
AttributeError: type object "User" has no attribute "USERNAME_FIELD"

</code>

迁移模型时报 has no attribute “USERNAME_FIELD”错误时时,是因为模型继承自AbstractBaseUser,只需在模型中添加 USERNAME_FIELD= “username”

<code class="language-python">class User(BaseModel, AbstractBaseUser):
    username = models.CharField(max_length=128, unique=True, verbose_name="用户名")
    phone = models.IntegerField(verbose_name="手机号")
    email = models.CharField(max_length=128, verbose_name="邮箱")
    USERNAME_FIELD = "username" # 加上这句代码

    def __str__(self):
        return self.username

    class Meta:
        db_table = "aley_user"
        verbose_name = "用户"
        verbose_name_plural = verbose_name
</code>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Django继承AbstractUser和AbstractBaseUser时迁移问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址