在Django中处理其他用户数据的正确方法?

时间:2009-12-20 23:02:55

标签: django oop

我需要为Django项目中的每个用户附加大量附加属性。其中一些属性是简单的CharFields,其他属性则更复杂的ManyToManyFields。给我带来的麻烦是,在我的方法中,我找到了两个选项:The user profile method在文档中解释,而user subclassing method我看到在互联网上浮动。

它们看起来都很复杂,而且我宁愿不选择一个只发现我需要在经过几个月的开发后再回到其他方法,所以我在这里问。哪种方式正确方式?

4 个答案:

答案 0 :(得分:2)

我一直以传统方式完成,这意味着用户个人资料,因为它是在文档中提出的,但这不是最清晰和优雅的解决方案。您必须始终处理用户没有个人资料的可能性,我不太喜欢。在下一个项目中,我想使用子类,如果只是在Django的稳定版本中,我会在我的公司中按同事来试试这个。这似乎更自然。

如果您想保持安全,请使用proile。如果您希望承担一点风险并从更好的解决方案中受益,请使用子类。引入它的原因有很多 - 有几个关于配置文件解决方案弱点的讨论。

答案 1 :(得分:0)

推荐的,似乎也是最简单的用户配置文件方法。

答案 2 :(得分:0)

我选择了不同的路径:我有一个客户端模型,女巫应该进行身份验证。我没有扩展用户模型来调整我的客户模型,而是将它们分开。然后,当我保存新客户端时,在Client save()方法中,我为该客户端创建了一个用户。然后我做同样的更新和删除,以保持同步。我尝试了另外两个选项,但每个选项都有很多缺点,这就是我放弃它们的原因。这对我来说非常有用。

的问候。艾度。

答案 3 :(得分:0)

与aldux一样,我更喜欢创建一个独立的模型,让用户模型不受影响。