【问题标题】:Should I ForeignKey to Django User or a Profile model?我应该对 Django 用户还是 Profile 模型使用 ForeignKey?
【发布时间】:2011-10-26 11:03:39
【问题描述】:

我想知道人们对于将模型直接加入 auth.User 对象与用户的个人资料模型有何想法。

我正在存储我的用户在我的应用中添加的一些不同类型的模型。应用用户将通过这些模型上的条件搜索其他用户。

一方面,我在想,如果我直接加入用户,那么每次我需要获取用户的记录时,我都不需要做 request.user.get_profile() ,而且它不预设用户总是有个人资料(他们在我的应用程序中做,但仍然)。这使得配置文件模型只包含用户的联系方式。

另一方面,我想当我查找这些其他模型时,我很可能需要个人资料中的值(例如名称、位置)。

毫无疑问,两者都会起作用,所以也许没关系,但我只是想知道其他人的想法是什么。

谢谢!

卢多。

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    我还建议为 User 模型创建外键。一方面,在视图中使用用户对象时,它只会让您的生活更简单。因此,您可以执行 request.user.foo_set 等操作,而无需通过配置文件模型。

    【讨论】:

    • 我没有考虑到这一点。中肯的建议。
    【解决方案2】:

    一般来说:如果您想让您的应用可重用,请始终为用户模型创建外键。

    正如您已经说过的,在大多数情况下,您将需要 User 以及 Profile 实例,因此要防止多个数据库查询,请使用缓存。

    如果可重用性不相关,则为 Profile 创建外键并使用 select_related() 通过单个查询获取 User 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-03
      • 2014-07-30
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 2017-01-04
      • 2013-01-19
      相关资源
      最近更新 更多