Django auth.User

时间:2010-09-03 12:02:19

标签: django authentication

我正在开发包含许多类型用户的网页,每个用户都有不同的配置文件属性。我想使用内置的auth系统但是:

a)我想使用django-registration。 b)我可以将User.get_profile指向一个配置文件模型。

如何以漂亮的方式实现这一目标?

2 个答案:

答案 0 :(得分:0)

我没有使用django-registration,所以我不知道它需要什么。对于问题的第二部分,一种方法是

  1. UserProfile与每User
  2. 相关联
  3. 添加不同类型的ProfileProperty类,并使用generic relationshipUseProfile链接到这些类。
  4. 我知道,这有点紧张。

答案 1 :(得分:0)

我不是专家,也不是python,django或数据库,但几周前我遇到了类似的问题,#django有人建议我使用Generic关系来实现这个目标。

我创建了一个喜欢(通过OneToOnefield)到“true”配置文件的UserProfile模型,并使用contrib.content-type和generic关系,我可以使用几种不同的porfile类型。

请注意,如果您不想再在每个get_profile()上再次访问数据库,那么应该适合您。

另一种方法是创建一个包含所有配置文件类型的所有字段的大表,并使用某种挂钩(或重新实现自定义save())来根据配置文件类型检查已停用的字段。但对我来说这看起来很复杂,特别是如果你想要有很多不同的配置文件类型。

另一个替代方法是创建一个TextField派生的自定义字段,并将其用作字典的存储,您可以在保存时对其进行pickle,并在加载时从中取消。通过一些黑客攻击,你当然可以将一些模型属性映射到字典键。这将带来很大的灵活性。

ya的免费提示:我还使用fixture来测试我的应用程序,忘记检查post_save信号的raw参数是否为True,以防止在使用manage.py loaddata时执行UserProfile创建。正如我在post_save回调中编写了“真实”配置文件的编码一样,在我发现正在发生的事情之前,异常会有什么奇怪之处。

有用的资源: