(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'
當Django遷移模型時報304錯誤,解決方法:
? 當你的繼承AbstractUser類時,會使用django的用戶認證,需要在專案的setting.py 中加入AUTH_USER_MODEL="app.model"
# 用戶認證
AUTH_USER_MODEL = "users.User"
——————————————————————————————————————————————————
(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'
遷移模型時報 has no attribute 'USERNAME_FIELD'錯誤時時,是因為模型繼承自AbstractBaseUser,只需在模型中添加 USERNAME_FIELD= "username"
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/3682.html
標籤:Python
