2012-03-30 49 views
2

我看到他的头衔似乎相似但不列入符合我的要求,我的用户是非常不同的,所以只有不同的角色将可能不能很好的工作在stackoverflow.com另一个问题。我有一个工作门户的场景,其中一种类型的用户是具有不同属性不同功能的公司,而其他候选人可以显示其个人资料并恢复e.t.c.,他们将具有不同的URL。所以他们完全不同,但共同点是他们都是注册用户。他们将使用登录表单,他们将更改密码,我打算使用User类。什么是更好的方式有多种类型的会员档案在Django

我面临的实际的问题是关于UserProfile类的用法。 UserProfile用于配置文件,但在我的情况下,这两个用户是完全不同的,并且在配置文件中需要很多不同的东西。我将来也可能会在系统中添加更多的用户类型。虽然在Django,我们要谈的轮廓是settings.py中添加这种单一的模式

AUTH_PROFILE_MODULE = ‘accounts.userprofile’ 

那么,有没有办法通过使用Django的某种继承或抽象类或一些其他的方式,这样做到这一点我可以获得预期的功能,并可以使用django Profiles

回答

2

编辑:好吧,经过进一步检查,我以前的答案显然是行不通的。

我曾提倡抽象UserProfile类。但是,如果你这样做了,你不能实例化它,所以你又回到了原点。

但是,您可以使用多表继承来实现你想要的。请参阅文档中的this以及提供灵感的Quora thread

我之前发布的代码在很大程度上仍然不变,保存为元亚类的排斥和抽象的变量。

class UserProfile(models.Model): 
    # Some Stuff 

class CompanyProfile(UserProfile): 
    # Some more stuff 

class CandidateProfile(UserProfile): 
    # Even more stuff 
+0

所以我将要在'AUTH_PROFILE_MODULE'设置settings.py中,使他们与'UserProfile'类交互等应用的Django使用这些个人资料类? – Hafiz 2012-03-30 19:28:59

+0

@Hafiz您可以设置UserProfile,然后在视图中插入一些逻辑来处理不同的类型。但是请大幅编辑它,请重新阅读我的答案。我原先提出的解决方案将*不*工作。新的应该。 – Todd 2012-03-30 19:33:14

+0

问题是,get_profile()将不起作用。 – alan 2012-03-30 19:37:47

相关问题