2011-08-17 4 views
3

Django (1.2.5, Ubuntu에서 제공되는 버전)의 사용자 프로필을 통해 사용자에게 몇 가지 추가 속성을 추가하려고합니다. 관리 콘솔을 통해 새 사용자가 포함 된 새로운 속성 중 하나 (예 : 'phone') 중 하나가 "user_id 열이 고유하지 않습니다"IntegrityError가 발생합니다.user_id 열이 Django UserProfiles와 중복되지 않습니다.

나는 다른 사람들이이 문제를 가지고있는 것을보고, 그들은 사용자 프로필 생성 신호에 고유 dispatch_uid를 추가하여 해결 한 것 같다,하지만 나를 위해 작동하지 않습니다 :

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로 설정 이 클래스에서 settings.py를 가리 킵니다.

누구나 내가 뭘 잘못하고 있는지 알아?

답변

5

동일한 프로필을 만드는 데 두 번의 시도가 있습니다. 하나는 신호이고 다른 하나는 인라인 된 관리자 양식에서 직접 가져온 것입니다.

question/answer은이 문제와 잠재적 인 해결책을보다 자세히 설명합니다.

+0

그게 문제 였어, 고마워. – paul88888

0

아마도 이것이 사용자 생성을위한 신호인지 확인하십시오. 여러 콜백으로 경쟁 조건이 표시 될 수 있습니다.

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

음, 같은 오류가 발생합니다. 나는 그것이 그것이 경쟁 조건인지 여부를 아는 것이 손실 될 것 같네요. 건배. – paul88888

관련 문제