Django自定义用户VS用户配置文件

时间:2013-09-04 23:47:48

标签: python django django-authentication django-registration django-1.5

我目前正在使用Django 1.5.1并使用官方文档中描述的自定义用户。我意识到所有内容都存储在一个表auth_user之下。

我的问题是,为什么最好将所有内容放在一个大表中,而不是通过使用user_profile表来获取所有其他数据,而不是像以前那样拥有2个表?它似乎比以前更聪明,如果我们想要添加20个新字段以获取有关用户的信息,在auth_user中包含所有内容是很奇怪的。

在我的情况下,现在我class MyUser(AbstractUser)有2个额外的字段genderdate_of_birth,所以这一切都很好,但现在我想提供许多其他信息(文本字段)像“最喜欢的电影”,“最喜欢的书籍”,“爱好”,“我不能没有的5件事”等等,以获得更多关于我的用户的信息。所以我只是想知道我是否应该把它放在MyUser课程下面,还是应该定义一个UserProfile?为什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果在一个表中拥有它,那么数据库访问速度会更快。使用旧方法,您必须在辅助表上join以获取用户的所有信息。

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

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

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

关于您在何处放置其他用户信息(例如“爱好”等)的问题,这实际上取决于您查询/需要此属性的频率。它们只会出现在用户的个人资料页面上吗?那么你可以将它们放在一个单独的表中,并且不会出现太多问题或性能损失。否则,更喜欢将它们存储在与User相同的表格中。