2013-03-08 11 views
11

Io uso l'app di registrazione django e Django 1.5. Come creare (di nuovo in Django) modello di utente personalizzato e salvare anche questi dati durante la registrazione (Si prega di notare che io sto usando django-registrazione):django-registration app e Django 1.5 custom user model

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

Hai visto questo? http://stackoverflow.com/questions/1072270/saving-profile-with-registration-in-django-registration – rafek

+0

@rafek Provo con un nuovo modello utente personalizzato (nuovo in Django 1.5) – user2054574

risposta

9

La forcella principale di django-registration non è compatibile con django 1.5 per ora.

Controllare this pull request.

Sono disponibili tre opzioni: il codice di

  • Patch django-registrazione. È possibile ottenere le modifiche necessarie dalla richiesta di pull.
  • Utilizzare un fork non ufficiale già applicato. This one per esempio.
  • attendere un aggiornamento sulla forcella principale ...
+1

Ho appena scaricato il "trunk" corrente versione dell'applicazione 'django-registration' da bitbucket, e funziona con Django 1.5 (non ha funzionato quando ho usato' pip' per installare l'app). Il numero di versione che ho scaricato è 'VERSION = (0, 9, 0, 'beta', 1)'. – yellowcap

+1

forse 'django-registration2'? L'ho appena installato 'django-registration' perché' yolk -V django-registration' fornisce solo 'django-registration 0.8' che non è compatibile con Django == 1.5.1 – boldnik

4

Questa link spiega il processo di bene e lavora con Django-registrazione 1.0

qui ci sono alcune indicazioni supplementari in aggiunta al codice di cui sopra.

Per aggiornare il primo nome cambiare questo nel 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) 

e nel file 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) 

finalmente a vedere i cambiamenti nel modulo creano un modello appropriato. Il profilo può essere visto in l'amministratore con la creazione di un file chiamato admin.py nella vostra app e scrivere il codice seguente

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

Questo non creerà effettivamente un utente e istanza ExUserProfile? –

+1

Sì, è oggettivo che il modello utente personalizzato venga creato associando ExUserProfile all'oggetto utente e salvando i campi necessari – timberlake

0

Django-registrazione 1.0 è stato rilasciato di recente. È stato completamente riscritto per utilizzare le viste basate sulla classe e con il supporto del modello utente personalizzato Django 1.0. Dai un'occhiata allo docs.