3 Stimmen

Spalte user_id ist nicht eindeutig, mit Django-Benutzerprofilen

Ich versuche, einige zusätzliche Attribute zu einem Benutzer über ein Benutzerprofil in Django (1.2.5, die in Ubuntu Natty gelieferte Version) hinzuzufügen, aber immer wenn ich einen neuen Benutzer über die Admin-Konsole erstelle, mit einem der neuen Attribute (z.B. 'Telefon') enthalten, erhalte ich einen "Spalten-Benutzer-ID ist nicht eindeutig" IntegrityError.

Ich sehe, dass andere Leute dieses Problem hatten und es scheint, dass sie es gelöst haben, indem sie dem Erstellen des Benutzerprofilsignals eine eindeutige dispatch_uid hinzufügen, aber das funktioniert nicht für mich:

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    phone = models.CharField(max_length=40,blank=True,null=True)

def create_user_profile(sender, instance, **kwargs):
        UserProfile.objects.get_or_create(user=instance)

post_save.connect(create_user_profile, sender=User, dispatch_uid="users-profilecreation-signal")

AUTH_PROFILE_MODULE ist in settings.py auf diese Klasse gesetzt.

Weiß jemand, was ich falsch mache?

5voto

AndrewS Punkte 1641

Es gibt zwei Versuche, dasselbe Profil zu erstellen. Einen vom Signal aus und einen direkt aus dem eingebetteten Admin-Formular.

Dieses Frage/Antwort behandelt es und eine mögliche Lösung im Detail.

0voto

AndrewS Punkte 1641

Möglicherweise überprüfen, ob dies ein Signal zur Erstellung eines Benutzers ist. Es könnte sein, dass Sie ein Wettlaufproblem mit einer Anzahl von Rückrufen sehen.

def create_user_profile(sender, instance, created, **kwargs):
    if created:
        UserProfile.objects.get_or_create(user=instance)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X