我有一个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
答案 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()