【问题标题】:Error in Inherit BaseUser in Django 1.7b4在 Django 1.7b4 中继承 BaseUser 时出错
【发布时间】:2014-08-08 08:33:33
【问题描述】:

我正在尝试向已经存在的 django 用户模型添加自定义字段。

我想要默认用户模型的所有字段(包括密码哈希功能)+ 自定义字段 has_car,所以我做到了...

class MyUser(AbstractBaseUser):
      has_car = models.BooleanField(default=False)

并在管理面板注册admin.site.register(MyUser)

当我尝试在管理面板中添加打开此模型时,我收到此错误。

OperationalError at /admin/myapp/myuser/
(1054, "Unknown column 'myapp_myuser.id' in 'field list'")

我不确定是mysqldb错误还是什么?

我知道我可以使用 OneToOne 或 ForeignKey 字段,但我只是想扩展 User 模型。 再次,它 django==1.7b4 + Mysql

【问题讨论】:

    标签: python django python-2.7 django-models django-admin


    【解决方案1】:

    如果您只是想将自定义字段添加到标准 User 模型,您的用户模型应该继承自 AbstractUser 而不是 AbstractBaseUser

    别忘了设置:

    AUTH_USER_MODEL = 'myapp.MyUser'
    

    https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-django-s-default-user

    【讨论】:

    • 我也试过了。我收到这个错误。 auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'myuser.groups'.
    • @user3745956 你在使用正确的迁移吗?如果没有,请删除您的数据库并重新开始。
    • 在哪里添加AUTH_USER_MODEL = 'myapp.MyUser'这一行?
    • @user3745956 在你的 Django 配置设置中。
    • 太棒了!它的工作!但我有一个查询。为什么密码对我可见,不像默认用户模型密码自动被散列,即使我输入密码,使用管理界面,我们也看不到密码,而是 django 向我们显示 DOT(作为标准密码表示法)并再次要求确认。但在我的 customuser 模型中,密码是可见的,即使在保存对象之后也是如此。我怎样才能摆脱这个?
    猜你喜欢
    • 2023-03-10
    • 2014-02-28
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多