Django中AbstractBaseUser使用phonenumber_field迁移报ImportError如何解决?
错误原因及修复方案
你遇到的报错是配置语法错误引发的,按以下步骤修改即可解决:
核心报错根因修复
你的settings.py中INSTALLED_APPS配置段的'Accounts.apps.AccountsConfig'末尾遗漏了英文逗号,Python会自动拼接前后两行字符串,变成'Accounts.apps.AccountsConfigphonenumber_field',和报错提示完全吻合。
修改后配置如下:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'Accounts.apps.AccountsConfig', # 这里补充英文逗号 'phonenumber_field', ]其他关联问题修复(避免后续报错)
- 修复
models.py的两处问题:- 顶部补充导入:
from phonenumber_field.modelfields import PhoneNumberField REQUIRED_FIELDS要求为列表/元组类型,将现有字符串写法改为REQUIRED_FIELDS = ['phone_number']
- 顶部补充导入:
- 修复
forms.py的语法错误:UserChangeForm类中的fields = '__all_'少了末尾下划线,改为fields = '__all__'
- 修复
所有修改完成后,删除Accounts应用下migrations目录中除__init__.py外的所有文件,重新执行迁移命令即可正常构建数据库。
内容的提问来源于stack exchange,提问作者Sina
相关产品推荐
相关产品推荐

