我正在开发包含许多类型用户的网页,每个用户都有不同的配置文件属性。我想使用内置的auth系统但是:
a)我想使用django-registration。 b)我可以将User.get_profile指向一个配置文件模型。
如何以漂亮的方式实现这一目标?
答案 0 :(得分:0)
我没有使用django-registration,所以我不知道它需要什么。对于问题的第二部分,一种方法是
UserProfile
与每User
ProfileProperty
类,并使用generic relationship从UseProfile
链接到这些类。 我知道,这有点紧张。
答案 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回调中编写了“真实”配置文件的编码一样,在我发现正在发生的事情之前,异常会有什么奇怪之处。
有用的资源: