在Django 1.7b4中继承BaseUser出错

2 投票
1 回答
2623 浏览
提问于 2025-04-18 10:10

我想在已经存在的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字段,但我只是想扩展用户模型。再次说明,我使用的是django==1.7b4 + Mysql。

1 个回答

5

如果你只是想在标准的 User 模型中添加一些自定义字段,那么你的用户模型应该从 AbstractUser 继承,而不是从 AbstractBaseUser 继承。

别忘了设置:

AUTH_USER_MODEL = 'myapp.MyUser'

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

撰写回答