【问题标题】:Different user with more fields in the same model in DjangoDjango中同一模型中具有更多字段的不同用户
【发布时间】:2021-04-04 16:55:50
【问题描述】:

我计划为两个不同的用户使用相同的用户模型,并在一个模型中添加一些附加字段。有可能在 Django 中做到这一点吗?如果可以,我该怎么做?

【问题讨论】:

  • 欢迎来到 Stack Overflow。请阅读How to Ask。为什么不同的用户会有不同的字段?您是在谈论用户的类型,即可能是不同的类别吗?

标签: python django authentication


【解决方案1】:

你有两个选择:

首先

您创建一个新模型(称为 ExtendedUser)并将额外的字段放入该模型中。 然后将 ExtendedUser 模型设置为从 MainUser 模型继承。这将创建两个表,它们之间具有一对一的链接。 这样做的好处是您的 ExtendedUser 模型将继承原始 MainUser 模型中定义的任何方法,并且您只需要在绝对必要时将方法添加到 ExtendedUser 模型。您还可以编写可以轻松处理 MainUser 和 ExtendedUser 模型的函数,因为它们都是 MainUser 模型的实例。使用继承的好处之一是,如果您在 ExtendedUser 模型上编写一个获取所有字段的查询,它也可以很好地获取 MainUser 字段。

第二个(更糟糕的)选择:

有一个单独的扩展模型,上面有一个标志,表明是否使用额外的字段。这可以工作,但会使您的查询更加复杂,并且如果您需要为额外的字段编制索引,则索引的效率可能会降低一些。

注意:在 SQL 中拥有第二个表与两者之间的关系并不是一件坏事——这就是通常管理数据的方式。为某些类型的用户提供特殊的可选字段并不如前所述。

【讨论】:

  • 感谢您的回答。我会试试这个解决方案
猜你喜欢
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
相关资源
最近更新 更多