执行makemigrations时触发NameError: name 'AUTH' is not defined错误求助
解决Django自定义User模型时的AUTH NameError问题
问题原因
错误提示明确指向settings.py第133行存在未定义的AUTH,这是因为该位置有一个单独的AUTH关键字——Django配置中不存在这个单独项,属于输入失误(比如输入AUTH_USER_MODEL时只写了一半,或是误留了多余的代码)。
解决步骤
- 打开
settings.py文件,定位到第133行,删除该行单独的AUTH单词; - 确认
AUTH_USER_MODEL = 'accounts.User'配置无误:accounts必须是你已添加到INSTALLED_APPS中的app名称;User是你自定义的用户模型类名;
- 重新执行命令:
python manage.py makemigrations python manage.py migrate
额外注意
如果你的代码中未定义UserManager,后续执行命令时会触发新错误,需补充实现自定义用户管理器:
class UserManager(BaseUserManager): def create_user(self, email, name, password=None): if not email: raise ValueError('用户必须提供邮箱') email = self.normalize_email(email) user = self.model(email=email, name=name) user.set_password(password) user.save(using=self._db) return user def create_superuser(self, email, name, password): user = self.create_user(email, name, password) user.is_superuser = True user.is_staff = True user.save(using=self._db) return user
内容的提问来源于stack exchange,提问作者Darwin
相关产品推荐
相关产品推荐

