2011-08-17 9 views
3

Djangoのユーザプロファイル(1.2.5、Ubuntuで提供されているバージョン)を使用してユーザに追加属性を追加しようとしていますが、管理者コンソールを使用して新規ユーザーを追加しました。新しい属性の1つ(「電話」など)を使用すると、「user_id列が一意ではありません」というエラーが表示されます。カラムuser_idはDjango UserProfilesと一意ではありません

は、私は他の人がこの問題を抱えていることがわかり、彼らはUSERPROFILE作成信号に固有の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

同じプロファイルを作成する2つの試みがあります。 1つはシグナルに由来し、もう1つはインライン管理フォームから直接取得されたものです。

このquestion/answerは、これと潜在的な解決策をより詳細にカバーしています。

+0

それは問題だった、ありがとう。 – paul88888

0

おそらく、これがユーザーを作成するための信号であるかどうかを確認してください。いくつかのコールバックで競合状態が発生している可能性があります。

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

ええと、同じエラーが発生しています。私はそれが競争状態かどうかを知ることができなくなってしまっているのではないかと心配しています...乾杯。 – paul88888

関連する問題