2013-11-01 2 views
0

Я подключил приложение django-registration к моему проекту, и он отлично работает. Новые пользователи могут зарегистрироваться и войти в систему. В моем приложении, однако, я хочу предоставить пользователю весь профиль и использовать информацию, которую я получил через django-registration.Как связать зарегистрированного пользователя от django-регистрации с моделью моего приложения?

Как я могу связать информацию из django-регистрации и пользовательской модели моего собственного приложения?

from django.contrib.auth.models import models as auth_models 
from django.contrib.auth.models import User 

class User(User): 

    username = auth_models.CharField(max_length=100) 
    description = auth_models.TextField() 
    picture = auth_models.ImageField(upload_to=something, blank=True, null=True) 
    location = auth_models.CharField(max_length=200) # please replace with GIS API 

    email = auth_models.EmailField() 
    password = auth_models.CharField(max_length=128) 

    # during registration: did the user click 
    # the sent activiation link? 
    is_active = auth_models.BooleanField(default=False) 
    appear_in_public_ranking = auth_models.BooleanField(default=True) 

    def __unicode__(self): 
     return self.username 

ответ

2

В Django 1.5, extending the existing User model был введен. Вы можете использовать это, чтобы добавить новые поля.

Но если вы используете предыдущую версию Django, выполните следующие действия:

Создать новую модель под названием Profile и поместить все необходимые поля там.

from django.contrib.auth.models import User 

class Profile(models.Model): 
    user = models.OneToOneField(User) 
    ... 

Затем в файле настроек, добавьте:

AUTH_PROFILE_MODULE = '<application_name>.Profile' 

где application_name это имя приложения, в котором вы создали Profile модель.

Если у вас есть подписанный пользователь, вы можете использовать request.user.get_profile() для получения соответствующего объекта Profile.