2013-01-24 27 views
1

我已經成功實現了一種方式來創建屬於不同用戶的用戶,使用不同的表單爲每個註冊url創建userena,繼承userena註冊表單並覆蓋save方法用戶轉到一個組或另一個組。用django-userena處理各種用戶的配置文件

比如在我的/品牌/網址我:

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()編輯配置文件,所以我將嘗試通過編輯該類來分配不同的配置文件對象。

+0

你成功了嗎?如果是的話,你能回答你的問題嗎?它可能對其他人有用;) – Leonardo

+0

對不起@萊昂納多我繼續使用該工具,我甚至不記得我是如何做到的,可能是快速和骯髒。我沒有任何線索 :( – Bastian

回答

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

相關問題