2012-12-31 14 views
6

Ich habe ein Authentifizierungssystem basierend auf Django Auth, aber ich muss den Benutzern Informationen hinzufügen. Was ist der beste Weg, das in Django 1.5 zu tun? (In 1.4 habe ich ein Profil verwendet, das onetoone mit dem Benutzer verbunden ist, aber jetzt?)Django 1.5: Benutzer und zusätzliche Informationen

Antwort

9

Django 1.5 hat extendable User models. Grundsätzlich können Sie ein abstraktes Basisbenutzermodell erweitern, Ihre Felder und alles hinzufügen und von dort aus verwenden.

Das Basismodell hat nur die Grundlagen zur Authentifizierung - das Passwortfeld und ein Feld für die Zeit der letzten Anmeldung. Sie müssen sogar einen eigenen Benutzernamen erstellen. Wenn Sie mit etwas wie dem aktuellen Django-Benutzermodell (mit Benutzername, Vorname, Nachname usw.) vertraut sind, existiert es auch als AbstractUser und Sie können es anstelle von AbstractBaseUser erweitern und Ihre eigenen Felder hinzufügen.

+1

Ja, ich habe das auf dem Dokument gelesen. Aber ich möchte keinen AbstractBaseUser implementieren, denn was ich brauche, ist bereits in User. Ich muss nur Dinge hinzufügen. Also, wie man das programmiert? – tapioco123

+0

Benutzer ist im Grunde das gleiche wie AbstractUser, aber mit einem SWAPPABLE-Attribut (was auch immer es ist) https://github.com/django/django/blob/master/django/contrib/auth/models.py#L457. Machen Sie also Ihr eigenes Modell von AbstractUser. – justinas

+0

Ich geerbt, aber auf Syncdb habe ich die folgenden Fehler: CommandError: Ein oder mehrere Modelle nicht validiert: account.user: Accessor für m2m Feld 'Gruppen' Konflikte mit verwandten m2m Feld 'Group.user_set'. Fügen Sie der Definition für 'Gruppen' ein Argument related_name hinzu. account.user: Accessor für m2m-Feld 'user_permissions' kollidiert mit dem zugehörigen m2m-Feld 'Permission.user_set'. Fügen Sie der Definition für 'user_permissions' ein Argument related_name hinzu. auth.user: Accessor für m2m Feld 'Gruppen' kollidiert mit verwandten m2m Feld 'Group.user_set'. Fügen Sie der Definition für 'Gruppen' ein Argument related_name hinzu. – tapioco123

0

In django 1.5 sollten Sie eine custom user model erstellen. Benutzerprofile sind jetzt veraltet.

+0

Wo heißt es, dass die Erweiterung des Benutzermodells mit einem "Profil" veraltet ist? Die "Entwicklungs" -Django-Dokumente und 1.7-Dokumente stellen beide dies als erste Lösung dar, und AUTH_USER_MODEL kommt mit einigen ziemlich schweren Warnungen und Implikationen ... – GreenAsJade

+0

'AUTH_PROFILE_MODULE' ist [veraltet ab django 1.5] (https: //docs.djangoproject .com/de/1.6/ref/settings/# auth-profile-modul). – dgel

Verwandte Themen