什么是在django中拥有多种类型的成员配置文件的更好方法

时间:2012-03-30 18:55:38

标签: django django-models django-users django-profiles

我在stackoverflow.com上看到另一个问题,其标题看似相似,但是不符合我的要求,我的用户非常不同,所以只有不同的角色可能效果不佳。我有一个职位门户的场景,其中一种类型的用户是具有不同属性不同功能的公司,而另一种是可以显示其简档并恢复e.t.c.的候选人,他们将具有不同的URL。所以他们完全不同,但常见的是他们都是注册用户。他们将使用登录表单,他们将有更改密码,我打算使用User类来实现此目的。

我面临的实际问题是UserProfile课程使用情况。 UserProfile用于配置文件,但在我的情况下,这两个用户完全不同,在配置文件中需要许多不同的东西。此外,我将来可能会在系统中添加更多用户类型。在django中,我们通过在settings.py

中添加此单个模型来说明配置文件
AUTH_PROFILE_MODULE = ‘accounts.userprofile’

有没有办法通过在django中使用某种继承或抽象类或其他方式来实现这一点,以便我可以获得预期的功能并且可以使用django Profiles

1 个答案:

答案 0 :(得分:2)

编辑:好的,经过进一步检查,我之前的回答显然不起作用。

我曾主张抽象UserProfile类。但是,如果你这样做,就无法实例化它,所以你要回到原点。

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

我之前发布的代码基本保持不变,除了排除Meta子类和抽象变量。

class UserProfile(models.Model):
    # Some Stuff

class CompanyProfile(UserProfile):
    # Some more stuff

class CandidateProfile(UserProfile):
    # Even more stuff