我正在尝试添加两个额外的配置文件字段,并使本机身份验证工作正常。
在我的设置文件中
#settings.py
AUTH_USER_MODEL = 'users.User'
在我的users.user模型
中#users/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
foo = models.CharField(max_length=32, default='Blue')
bar = models.CharField(max_length=32, default='Blue')
print "user.user"
我创建了3个非超级用户,可以登录管理员。我已经尝试在添加用户后同步数据库。我已经尝试在添加用户之间重新启动开发服务器。
我唯一一次看到print的输出" user.user"是我运行createsuperuser命令。
我认为我无法登录,因为用户并未真正被创建。它运行我的User类,然后跳过实际创建用户。但我对此有点新意,所以我可以离开联盟。
为什么我无法登录,如何添加这两个字段?
答案 0 :(得分:0)
您是否阅读过Django文档中的警告?
更改AUTH_USER_MODEL会对数据库结构产生很大影响。它更改了可用的表,它将影响外键和多对多关系的构造。如果您打算设置AUTH_USER_MODEL,则应在首次运行manage.py syncdb之前进行设置。
如果您有一个现有项目并且想要迁移到使用自定义用户模型,则可能需要考虑使用像South这样的迁移工具来简化过渡。
鉴于此警告,您是在使用新数据库,还是使用South进行迁移?如果你有一个现有的数据库并进行了这些更改,那么简单地运行syncdb很可能就不够了。
如果这是一个没有任何重要数据的开发服务器,我会重新创建您的数据库,然后运行./manage.py syncdb
。如果您使用的是SQLite数据库,那么您只需将其复制到其他地方(如果您想保留数据),然后再次运行syncdb以创建新数据库。
Here is the relevant documentation.
确切地知道您收到的错误也很有帮助。您是否尝试登录并且管理员告诉您您的用户/通行证组合不正确,或者是否存在实际错误?你的问题并不能说清楚。