0

我目前正在使用 Django 1.5.1 并使用官方文档中描述的自定义用户。我意识到一切都存储在一张桌子下,auth_user一张。

我的问题是,为什么将所有内容都放在一个大表中,而不是像过去 1.5 之前的 2 个表,通过使用一个user_profile表来存储所有附加数据?它看起来比以前更聪明了,如果我们想为用户信息添加 20 个新字段,那么将所有内容都放在auth_user.

就我而言,现在我有class MyUser(AbstractUser)2 个额外的字段genderdate_of_birth,所以这一切都很好,但现在我想要很多其他信息(文本字段),比如“最喜欢的电影”、“最喜欢的书”、“爱好”, “我不能没有的 5 件事”等等,以获取有关我的用户的更多信息。所以我只是想知道我是否应该把它放在MyUser类下,还是应该定义UserProfile一个?为什么?

谢谢!

4

1 回答 1

1

当您将所有内容都放在一张表中时,数据库访问速度会更快。使用旧方式,您必须join在辅助表上获取用户的所有信息。

通常,当您看到One-to-One关系时,最好将它们合并到一个表中。

但是新的自定义User模型也解决了另一个问题,一个用户应该有什么属性?哪些属性对您的应用程序至关重要?是否需要电子邮件?电子邮件是否也应该是用户登录的用户名?

在引入此功能之前,您无法执行这些操作。

关于您关于在哪里放置“爱好”等其他用户信息的问题,这实际上取决于您查询/需要此属性的频率。他们只会出现在用户的个人资料页面上吗?那么你可以把它们放在一个单独的表中,不会有太大的问题或性能影响。否则更喜欢将它们存储在与User.

于 2013-09-04T23:54:24.540 回答