使用django-userena处理各种用户配置文件组

时间:2013-01-24 18:19:34

标签: django

我已经成功实现了一种方法,使用userena创建属于不同组的用户,为每个注册URL使用不同的表单,继承userena注册表单并覆盖save方法以将用户包括在一个组或另一个组中。

例如在我的/ brands / url中我有:

url(r'^signup/$',
'userena.views.signup',
{'template_name': 'userena/signup_form_brands.html', 'signup_form': SignupFormBrands}
),

以这种形式我有:

from userena.forms import SignupForm
from django.contrib.auth.models import Group


class SignupFormBrands(SignupForm):

def save(self):
    # First save the parent form and get the user.
    new_user = super(SignupFormBrands, self).save()
    new_user.groups.add(Group.objects.get(name='Brands'))
    return new_user

所以我用userena中包含的电池得到了我需要的东西。但现在我想继续使用includerena的配置文件编辑/查看功能,但有两种不同的配置文件。我想创建2个不同的配置文件模型,一个用于我的默认用户,一个用于品牌。然后我希望userena能够根据属于一个组或另一个组的用户编辑正确类型的配置文件模型。我不确定这是如何工作的以及如何做到这一点。

编辑:userena使用profile = user.get_profile()编辑个人资料,因此我将尝试通过编辑此类来分配不同的个人资料对象。

1 个答案:

答案 0 :(得分:0)

您可以通过以下代码覆盖User.get_profile:

original_get_profile = User.get_profile
def get_profile(self):
    if getattr(settings, 'AUTH_PROFILE_MODULE', None) != 'profiles.Profile':
        return original_get_profile(self)
    if not hasattr(self, '_profile_cache'):
        self._profile_cache = self.profile
        self.profile.user = self
    return self._profile_cache
User.get_profile = get_profile

将它放在models.py文件中的某个位置。 从这里复制的代码:http://pastebin.com/MP6bY8H9