Приложение django-registration и пользовательская модель Django 1.5

Я использую приложение регистрации django и Django 1.5. Как создать (новую в django) пользовательскую модель пользователя и сохранить также эти данные во время регистрации (обратите внимание, что я использую django-registration):

class CustomProfile(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=255)
    bank = models.CharField(max_length=255)
    address = models.CharField(max_length=255)

?

Ответ 1

Основная вилка django-registration теперь не совместима с django 1.5.

Отметьте этот запрос на перенос.

У вас есть три варианта:

  • Патч django-регистрационный код. Вы можете получить необходимые изменения в запросе на перенос.
  • Используйте неофициальную вилку, которая уже исправлена. Этот.
  • Дождитесь обновления основной вилки...

Ответ 2

Эта ссылка объясняет процесс хорошо и работает с django-registration 1.0

вот несколько дополнительных указателей в дополнение к вышеуказанному коду.

Чтобы обновить первое имя, измените это в файле models.py

def user_registered_callback(sender, user, request, **kwargs):
profile = ExUserProfile(user = user)
profile.is_human = bool(request.POST["is_human"])
user.first_name = request.POST["firstname"]
user.save()
profile.save()

user_registered.connect(user_registered_callback)

и в файле forms.py

class ExRegistrationForm(RegistrationForm):
    is_human = forms.BooleanField(label = "Are you human?:")
    firstname = forms.CharField(max_length=30)
    lastname = forms.CharField(max_length=30)

Наконец, чтобы увидеть изменения в форме, создайте соответствующий шаблон. Профиль можно увидеть в администраторе, создав в приложении файл admin.py и напишите следующий код

from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from prof.models import ExUserProfile

admin.site.unregister(User)

class UserProfileInline(admin.StackedInline):
    model = ExUserProfile

class UserProfileAdmin(UserAdmin):
    inlines = [ UserProfileInline, ]

admin.site.register(User, UserProfileAdmin)

Ответ 3

Недавно была выпущена Django-registration 1.0. Он был полностью переписан для использования представлений на основе классов и поддержки пользовательской модели Django 1.0. Проверьте docs.