添加新用户时修改用户配置文件失败,显示“重复输入错误”

时间:2013-01-11 10:36:48

标签: python django

用户个人资料类如下所示:

class UserProfile(models.Model):

    user = models.OneToOneField(User)
    email_my_machines = models.BooleanField(default=True)
    email_others_machines = models.BooleanField(default=True)

    class Meta(object):
        verbose_name_plural = "Profile"

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

post_save.connect(create_user_profile, sender=User)

在settings.py

中添加了"AUTH_PROFILE_MODULE = 'generic.UserProfile'"

一切按预期工作。

在Django Admin中,添加用户涉及两种形式。第一种形式具有最小字段,例如“用户名”,“密码”,“密码确认”和“用户简档”类中提供的字段。 当我修改此表单中的“用户个人资料”字段时,应用程序将崩溃并显示错误“(1062,”重复条目'34'表示密钥'user_id'“)”。这是完整性错误。

我是Django的新手。你能帮帮我吗?

1 个答案:

答案 0 :(得分:2)

我见过的唯一一次是同一个信号被发射两次。尝试在信号连接中添加dispatch_uid,它应该修复:

post_save.connect(create_user_profile, sender=User, dispatch_uid='create_profile_user')

另请参阅:https://docs.djangoproject.com/en/dev/topics/signals/#preventing-duplicate-signals