2013-03-08 17 views
11

Używam aplikacji do rejestracji Django i Django 1.5. Jak utworzyć (nowe w Django) niestandardowym modelu użytkownika, a także zapisać te dane podczas rejestracji (proszę zwrócić uwagę, że używam Django rejestracji):Aplikacja do rejestracji django i niestandardowy model użytkownika Django 1.5

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

Widziałeś to? http://stackoverflow.com/questions/1072270/saving-profile-with-registration-in-django-registration – rafek

+0

@rafek Próbuję z nowym niestandardowym modelem użytkownika (nowy w Django 1.5) – user2054574

Odpowiedz

9

Główny widelec do rejestracji Django nie jest na razie kompatybilny z Django 1.5.

Sprawdź this pull request.

Dostępne są trzy opcje: Kod

  • łata Django rejestracji użytkownika. Możesz uzyskać potrzebne zmiany z żądania wyciągnięcia.
  • Użyj nieoficjalnego widelca, który jest już załatany. This one na przykład.
  • czekać na aktualizację na głównej widelcem ...
+1

Właśnie pobrałem aktualny "trunk" wersja aplikacji 'django-registration' z bitbucket i działa z Django 1.5 (nie działało, gdy użyłem' pip' do zainstalowania aplikacji). Pobrany numer wersji to 'VERSION = (0, 9, 0, 'beta', 1)'. – yellowcap

+1

może "django-registration2"? Właśnie zainstalowałem go zamiast 'django-registration', ponieważ' yolk -V django-registration' daje tylko 'django-registration 0.8', która nie jest kompatybilna z Django == 1.5.1 – boldnik

4

Ten link wyjaśnia proces dobrze współpracuje z django rejestracji 1,0

oto kilka dodatkowych wskazówek, w uzupełnieniu do powyższego kodu.

Aby zaktualizować imię zmienić w 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) 

iw pliku 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) 

wreszcie zobaczyć zmiany w formularzu stworzyć odpowiedni szablon. Profil może być postrzegane w admin, tworząc plik o nazwie admin.py w swojej aplikacji i napisać następujący kod

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) 
+0

Czy to nie spowoduje utworzenia zarówno użytkownika i wystąpienie ExUserProfile? –

+1

Tak, to jest cel, że niestandardowy model użytkownika jest tworzony przez powiązanie ExUserProfile z obiektem użytkownika i zapisanie niezbędnych pól – timberlake

0

Django rejestracji 1.0 została wydana niedawno. Został on całkowicie przepisany, aby używać widoków opartych na klasach oraz z obsługą niestandardowego modelu użytkownika Django 1.0. Sprawdź numer docs.

Powiązane problemy