UNIQUE约束失败:auth_profile.user_id Django Allauth

时间:2018-02-19 20:12:24

标签: django allauth

我有一个create_or_update_user_profile方法的用户模型,每当发生保存事件时,我添加了一个新方法set_initial_user_names来保存网址,然后现在它显示错误{{1} }

IntegrityError at /accounts/social/signup/ UNIQUE constraint failed: auth_profile.user_id
   / accounts / social / signup / UNIQUE约束中的IntegrityError失败:   auth_profile.user_id

1 个答案:

答案 0 :(得分:1)

您正在尝试为同一用户创建两次用户。

在用户实例创建后立即在create_or_update_user_profile处理程序中创建第一个。第二个是:

@receiver(user_signed_up)
def set_initial_user_names(request, user, sociallogin=None, **kwargs):
    ...

    profile = UserProfile(user=user, avatar_url=picture_url)  
    profile.save()  # <--- HERE
在创建用户对象后触发

receiver(user_signed_up),因此用户个人资料已由create_or_update_user_profile创建。

因此,要解决此问题,您应该使用现有的用户配置文件,而不是创建新的用户配置文件:

@receiver(user_signed_up)
def set_initial_user_names(request, user, sociallogin=None, **kwargs):
    ...

    user.userprofile.avatar_url = picture_url 
    user.userprofile.save()