2011-05-24 194 views
0

我想在django註冊中的用戶配置文件添加一個位置字段。Django註冊配置文件字段

我加入了以下模型:

# in userprofile/models.py 
class Profile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    location = models.CharField(max_length=100, blank=True) 

# in settings.py 
AUTH_PROFILE_MODULE = 'userprofile.Profile' 

這是工作 - 在get_profile()作品時,我手動添加數據到數據庫。但是,我無法確定如何通過信號在註冊期間添加配置文件信息。這是我目前有:

# in backend/default/__init__.py 
def register(self, request, **kwargs): 
    username, email, password = kwargs['email'], kwargs['email'], kwargs['password1'] 
    if Site._meta.installed: 
     site = Site.objects.get_current() 
    else: 
     site = RequestSite(request) 
    new_user = RegistrationProfile.objects.create_inactive_user(username, email, password, site) 
    signals.user_registered.send(sender=self.__class__, 
           user=new_user, 
           request=request) 

    # how to add 'location = USA' to profile via signals here? 

    return new_user 

我怎麼會添加在上面__init__.py功能添加location=USA使用的信號。

回答

2

settings.py中添加

LOCATION = 'USA' 

__初始化__.py

# in backend/default/__init__.py 
def register(self, request, **kwargs): 

    username, email, password = kwargs['email'], kwargs['email'], kwargs['password1'] 
    if Site._meta.installed: 
     site = Site.objects.get_current() 
    else: 
     site = RequestSite(request) 
    import settings 
    if settings.LOCATION: 
     location = settings.LOCATION 
    new_user = RegistrationProfile.objects.create_inactive_user(username, location, email, password, site) 
    signals.user_registered.send(sender=self.__class__, 
           user=new_user, 
           request=request) 


    return new_user 

但不能是一個不錯的方式做事,添加應用程序

的代碼
相關問題