【问题标题】:"Partial Inheriting" from a Django model来自 Django 模型的“部分继承”
【发布时间】:2014-03-10 10:55:31
【问题描述】:

我知道部分继承是不可能的。 我需要为我的 Django 应用程序创建一个用户模型,因为我想使用 Django 中定义的 User 类。但我不需要 username 字段,该字段设置为 required

假设我从 User 继承到 MyUser。是否可以删除 MyUser 中的 username 属性。即 del MyUser.username? 或者有人可以建议其他方法吗?

【问题讨论】:

  • 保持原样。在username 字段中设置电子邮件。或者你必须修改auth 模块。
  • 在用户名字段中设置电子邮件有其自身的问题(如 maxlength)。如有必要,您可以将 user_id 放入用户名中。

标签: python django inheritance


【解决方案1】:

AbstractBaseUser class 是专门为这种情况而设计的。从此类继承并定义您自己的字段,并确保将USERNAME_FIELD 属性设置为您的电子邮件字段。

【讨论】:

    【解决方案2】:

    用户名字段是必需的 - 否则用户无法登录。

    如果您想使用电子邮件地址作为用户名 - 从 django 1.5 开始,您可以创建自己的 custom user model,它的工作方式与 django 附带的默认模型一样。

    在此自定义用户模型中,将 USERNAME_FIELD 属性设置为要用于用户名的列的名称。此列必须是唯一的。

    您需要做很多工作,实际上这应该在项目开始时完成,因为这些更改需要更新数据库。

    您应该read the documentation 开始使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多