[Django] UserCreationForm um Emailfeld erweitern

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
fr4
User
Beiträge: 4
Registriert: Donnerstag 17. Juli 2008, 11:14

Montag 2. März 2009, 12:30

Hallo,

die UserCreationForm hat ursprünglich nur die Felder (benutzername,passwort und passwort bestätigen).

Ich möchte gerne eine Registrierung haben, wo man auch noch eine Emailadresse angeben muss.

Laut der Documentation kann man irgendwie so in der Art:

>>> class UserCreationFormExtended(ModelForm):
... email = model.EmailField()
...
... class Meta:
... model = UserCreationForm()

Felder hinzufügen, klappt jedoch bei mir leider nicht.


ich habs auch schon so versucht:

model:
class UserCreationFormExtended(ModelForm):
class Meta:
model = User
fields = ('email')


def registration(request):
if request.method == 'GET':
registerForm1 = UserCreationForm()
..
registerForm5 = UserCreationFormExtended()
return render_to_response('registration/registration.html',{ 'registerForm1' : registerForm1, 'registerForm5' : registerForm5 })

if request.method == 'POST':
registerResponse1 = UserCreationForm(request.POST)
registerResponse5 = UserCreationFormExtended(request.POST)

if registerResponse1.is_valid() and registerResponse5.is_valid():
userObject = registerResponse1.save(commit = False)
userObject.email = registerResponse5 -> wie kann man auf die Value vom email feld zugreifen?
userObject.save()


hoffe, ich hab mich gut genug ausgedrückt.

Schonmal danke für eure Hilfe.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Montag 2. März 2009, 14:46

Hi,

Code bitte in Codeblöcken pasten.
Für dein Problem siehe http://docs.djangoproject.com/en/dev/to ... orms-index.

Du könntest zum Beispiel das Original-Feld erben:

Code: Alles auswählen

class MyUserCreationForm(UserCreationForm):
    email = model.EmailField()
fr4
User
Beiträge: 4
Registriert: Donnerstag 17. Juli 2008, 11:14

Mittwoch 4. März 2009, 11:06

danke für den Tipp,
habs gerade mal so versucht:

Code: Alles auswählen

class UserCreationFormExtended(UserCreationForm):
    email = models.EmailField()
Leider werden im Browser wieder nur die Standartfelder angezeigt

(Benutzername:

Passwort:

Passwort bestätigen: )
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Mittwoch 4. März 2009, 12:47

Gib mal den Code für das Register-View :)
fr4
User
Beiträge: 4
Registriert: Donnerstag 17. Juli 2008, 11:14

Mittwoch 4. März 2009, 14:20

ok ;)

ich habs jetzt zwar schon anders gelöst (unprofessionell)
aber wäre cool, wenn ich noch andere Möglichkeiten erfahre.

Ich hatte es in etwa so probiert

model:

Code: Alles auswählen

class UserCreationFormExtended(UserCreationForm):
    email = models.EmailField() 


view:

Code: Alles auswählen

def registration(request):
    if request.method == 'GET':
        registerForm1 = UserCreationFormExtended()
        return render_to_response('registration/registration.html',{ 'registerForm1' : registerForm1})
    if request.method == 'POST':
        registerResponse1 = UserCreationFormExtended(request.POST)
        
        if registerResponse1.is_valid():
            userObject = registerResponse1.save(commit = False)
            return render_to_response('registration/registrationConfirmation.html'........
        else:
            return render_to_response('registration/registration.html',{ 'registerForm1' : registerResponse1})
Antworten