【问题标题】:Django User inheritanceDjango 用户继承
【发布时间】:2021-01-14 16:01:31
【问题描述】:

我正在用 Django 建立一个食品订购网站。我希望我的用户在我的网站上注册一个帐户,他们应该登录才能实际订购。我想使用 Django 内置的 User 类,但它不包括地址、确认 ID 和电话号码等必要字段。如果我构建一个自定义的User 模型,那么它没有很多像auth.authenticate 这样我可以使用的好帮助函数。我搜索了这个主题,发现可以使用AbstractUser。但是当我从AbstractUser 继承我的CustomUser 类时,一些奇怪的事情开始发生。经过更多研究,我发现在应用我的内置迁移后更改 User 模型会产生一些错误,因为存在一些关系或其他东西。

我删除了我的数据库并创建了一个新数据库。现在,我正在从内置的User 类扩展我的CustomUser 类。这很好用,只有你不能用auth.authenticate 检查确认 ID。此外,每次我创建一个新的CustomUser 时,它似乎都会创建两个模型,另一个在 auth 选项卡下的 Users 中。

您能告诉我在应用内置迁移后将User 模型与更多字段连接起来的任何好方法吗?提前致谢。

【问题讨论】:

标签: django database authentication django-models


【解决方案1】:

您应该从 AbstractUser 而不是 User 类扩展(您遇到的行为是多表继承(如 documented))

替换默认用户模型的整个过程很好documented

【讨论】:

  • 我知道,但就像我说的,我从AbstractUser 扩展而来,但出现了一些问题,Django 文档说在应用内置迁移后更改用户字段会导致一些问题。感谢多表继承位! :)
  • 在这种情况下会出现一些问题,这也记录在docs.djangoproject.com/en/dev/topics/auth/customizing/…。在您最后一次尝试中,您扩展了错误的课程,这是我指出的不正确的,其余过程是正常的,不确定您到底在问什么
  • 我刚看到你的评论。谢谢,文档链接很有帮助。不幸的是,项目完成了。我希望它对另一个有用。注意:评论时请标记我(@safwan)
猜你喜欢
  • 2012-08-06
  • 1970-01-01
  • 2016-09-18
  • 2019-06-23
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多