【问题标题】:Django custom user model, with unique togethr - tenant and usernameDjango 自定义用户模型,具有唯一的 togethr - 租户和用户名
【发布时间】:2017-02-02 19:43:09
【问题描述】:

我正在 Django 上制作一个多租户应用程序,我希望用户模型在“租户”(租户模型的外键,具有租户详细信息)和“用户名”上是唯一的,例如 - unique_together = (“用户名”、“租户”)或其任何种类。有没有可能这样做?

【问题讨论】:

  • 是的,这是可能的。您可能也想让电子邮件独一无二(如果您要添加电子邮件)。
  • 感谢弗朗索瓦!!!我正在尝试这个但不工作。假设用户名 A,租户 A 已经注册。我正在尝试另一个用户名 A,租户 B 尝试注册...django 不接受。我的用户模型是从 AbstractUser 派生的,我将这个唯一性约束放在一起。Oncw 这行得通,我也会对电子邮件做同样的事情。
  • username 最有可能具有唯一性约束,因此您不能将用户名 A 添加两次。一种解决方法是建立多对多关系,并在直通表上添加约束
  • Karthikr,多对多表如何帮助我获得注册了两次 A 的用户名?因为,你看,一个用户名 A 的用户与另一个用户名 A 的用户不同。所以我认为多对多不会起作用

标签: django multi-tenant django-users


【解决方案1】:

Django 用户模型需要“用户名”是唯一的,因此我建议使用另一个字段来替换用户名,例如“电子邮件”,我相信您希望保持唯一

为此,您需要覆盖用户模型并更改用户名字段

USERNAME_FIELD = '电子邮件'

【讨论】:

  • 是否没有破解,我可以用它来覆盖这个用户名约束?我拥有的另一个选择是自动生成用户名。假设租户名称是 A,用户名将自动生成为 A1、A2...等。但这是我需要的最后一个首选选项。
  • 对不起,您需要创建自定义用户模型,继承 AbstractBaseUser、PermissionsMixin
  • 不愿意做!!!但现在,看来我只能这样做了……谢谢 segalle!!!
猜你喜欢
  • 2018-07-30
  • 1970-01-01
  • 2021-12-01
  • 2014-09-03
  • 1970-01-01
  • 2018-01-19
  • 2014-10-03
  • 2013-05-12
  • 1970-01-01
相关资源
最近更新 更多