Ich versuche, die django-registration
-Registrierungsform zu erweitern nach:
Python / Django Django-Registrierung ein zusätzliches Feld hinzufügen
aber ich bekomme:
current transaction is aborted, commands ignored until end of transaction block
In Debuggen Ich habe einen Haltepunkt in der addierte vorgeschlagen regbackend.py
, die der gebrochene Code schlägt unter:
Das Problem (siehe unten), kann etwas mit der Art und Weise Benutzerprofile erstellt zu tun, wie in meinem models.py
definiert:
In der Schale aus dem regbackend.py
Unterbrechungs entsteht oben aufgeführten kann ich produzieren:
und in der ausführlichen Spur bis zu diesem Punkt, erhalte ich:
%Vor%Ich habe versucht, diese Befehle Fütterung separat in dbshell, aber ich kann das Problem nicht sehen.
Irgendwelche Ideen?
Wenn ich etwas wie das Hinzufügen spezieller Felder oder spezielle Aktionen bei der Erstellung eines Benutzers behandle, vermeide ich es, User
model zu überschreiben und mag folgendes:
Profile
mit einem OneToOneField für Benutzer Beispiel für ein Profilmodell
%Vor%admin.py Beispiel
%Vor%Erstellen Sie einen Benutzer und hängen Sie ihm ein Profil an
%Vor%Jetzt haben Sie dieses Profilmodell an jeden Benutzer angehängt, und Sie können die Felder hinzufügen, die Sie zum Profilmodell machen möchten, und zum Beispiel, wenn Sie Folgendes machen:
user = User.objects.get(id=1)
Sie können auf sein Profil zugreifen:
user.profile
und um eine Funktion aufzurufen
user.profile.function_name
Du kannst das Profil auch bekommen und profile.user
Ich weiß, dass Sie versuchen, User
model zu überschreiben, aber ich bin mir ziemlich sicher, dass dies weniger komplex und einfach zu verwalten ist, neue Felder, Aktionen oder was immer Sie brauchen hinzufügen
Tags und Links python django postgresql transactions registration