使用Django User-Model还是创建自己的Model?

我目前正在设计一个基于Django的网站。为简单起见,我们假设它是一个简单的社区站点,用户可以登录并向其他用户写入消息。 我目前的选择是使用buildin用户模型或构建我自己的东西。我不需要来自buildin
User
:没有用户名(你的电子邮件地址是你的用户名),但你设置了一个你可以选择的内部名称,可供多个用户(如Facebook)使用。此外,我不需要权限系统,因为访问其他人不会基于组。因此,我最终只使用buildin
User
中的email,firstname,lastname和password字段,其他所有内容都将放在UserProfile中。 另一方面,buildin用户系统将在网站的后端派上用场,因为我有可能需要一个基于组的权限系统。 总而言之,在我看来,我宁愿构建我的一个用户模型并仅使用buildin来访问管理员后端。 我的思考有什么不对吗?     
已邀请:
  我的思考有什么不对吗? 是。   我目前的选择是使用buildin用户模型或构建我自己的东西。 还有第三种选择。 http://docs.djangoproject.com/en/1.2/topics/auth/#storing-additional-information-about-users   其他一切都将放在UserProfile中 正确。   构建我的一个用户模型并仅使用buildin来访问管理员后端 不要建立自己的。 做这个:   如果您想存储额外的   与您的用户相关的信息,   Django提供了一种指定方法   特定于站点的相关模型 - 称为   一个“用户档案” - 为此目的。     
作为django-primate的作者,我想补充一些评论。 Django-primate很容易让ju修改内置的User模型就是为了这个。您可能只需要一些额外的东西,然后使用django-primate。 但是有问题,虽然我不认为修改django用户模型本身就是一个问题。一个问题是“用户”非常不同,管理员用户和一些其他用户通常不相关。例如,当管理员登录然后想要以“普通用户”身份登录网站时,这可能会导致问题,他们不希望这些帐户相关,也不希望以管理员用户身份自动登录。这无缘无故会导致头痛。它还会导致许多其他令人头疼的事情来实现推荐的相关Profile模型,如果您想要使用身份验证装饰器,通常需要确保每个配置文件都有一个contrib用户和每个contrib用户的配置文件。 “用户”的形式和管理使这更加麻烦。简而言之:通常在这个过程中某些事情会出错,这是一个诅咒。 除了管理员之外,我大多放弃了contrib用户模型。构建另一个用户模型实际上是你想要的,但你也想要该用户的身份验证部分,因此django contrib User的常见用法(出于错误的原因使用它)。如果您遇到这种情况,最好的解决方案是为该自定义用户模型构建自己的身份验证。这实际上非常简单,我不能推荐这种方法。我认为官方推荐是错误的,而且应该有很好的工具来验证django中内置的自定义用户模型。     
你可能想看看最近创建的django-primate:https://github.com/aino/django-primate 我曾经构建了一个自定义用户模型,继承自默认模型。但它有效,我不推荐它。     
目前,您有一些要求,但随着时间的推移它们可能会发生变化。 Django的用户系统非常简单,使用它可以更容易地适应一些最常见的用例。 要考虑的另一个方面是,您可以使用几种已经可用的应用程序,这可能需要Django的用户。使用您自己的模型可能会使这些模块的使用变得更加困难。 另一方面,为了符合您当前的要求而攻击Django的用户系统可能会非常棘手。 此外,始终可以将“自定义用户”迁移到“Django用户”,因此您并没有真正关闭那扇门。 总的来说,我认为这取决于你对'用户'的意思。 如果你只是注册,并没有与核心Django功能的真正交互,那么我认为一个单独的模型就足够了,特别是因为你可以在任何时候以相对较少的努力进行迁移。 但是,如果对于您的应用程序,“用户”映射到与Django非常相似的东西,那么我将使用Django用户模型。     

要回复问题请先登录注册