2

用户配置文件类如下所示:

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)

"AUTH_PROFILE_MODULE = 'generic.UserProfile'"在 settings.py 中添加

一切都按预期工作。

在 Django Admin 中,添加用户涉及两种形式。第一个表单具有最少的字段,例如“用户名”、“密码”、“密码确认”和“用户配置文件”类中提供的字段。当我在此表单中修改“用户配置文件”字段时,应用程序将崩溃并出现错误“(1062,“重复条目 '34' for key 'user_id'”)”。这是一个完整性错误。

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

4

1 回答 1

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

于 2013-01-11T16:57:56.033 回答