1

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

例如,在我的 /brands/ 网址中,我有:

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

编辑:userena 用于profile = user.get_profile()编辑配置文件,因此我将尝试通过编辑此类来分配不同的配置文件对象。

4

1 回答 1

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

于 2013-09-10T08:37:16.323 回答