2012-08-09 49 views
0

我試圖所以這裏使用User profile特點是我的剖面模型:Django的 - 用戶繼承IntegrityError

class Nuser(models.Model): 
    user = models.OneToOneField(User) 
    initials = models.CharField(max_length=5) 
    def __unicode__(self): 
    return u'%s %s' % (self.first_name, self.last_name) 

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

post_save.connect(create_user_profile, sender=User) 

我的模型是正確創建的,但如果我嘗試添加一個用戶與後臺管理界面,我得到這個錯誤:

IntegrityError at /admin/auth/user/add/

(1062, "Duplicate entry '3' for key 'user_id'")

我做錯了什麼?

+0

一個用戶只能有一個用戶配置文件。你可以將數據粘貼到User和UserProfile表中嗎? – 2012-08-09 10:53:48

回答

2

該信號可能正在被多次註冊。使用dispatch_uid argument來防止這種情況。

例如:

post_save.connect(create_user_profile, sender=User, dispatch_uid='autocreate_nuser') 
+0

非常好的答案謝謝! (不知道爲什麼它被稱爲不止一次) – 2012-08-09 11:28:32

+0

沒有爲我工作。 – Clayton 2014-05-22 11:24:19