IndexError, list index out of range. Django-allauth signals

前端 未结 1 1887
离开以前
离开以前 2021-01-26 08:10

I\'m using signals to update gender, when social user change their gender on facebook.com. Signals work fine. I can sign up and login and gender is updating for fb users.

相关标签:
1条回答
  • 2021-01-26 08:41

    You are correct, that is the problematic line. You probably want something more like:

    from django.db.models import ObjectDoesNotExist
    
    @receiver(user_signed_up)
    @receiver(user_logged_in)
    def set_gender(sender, **kwargs):
        user = kwargs.pop('user')
        try:
            extra_data = user.socialaccount_set.get(provider="facebook").extra_data
        except ObjectDoesNotExist:
            pass
        else:
            gender = extra_data['gender']
    
            if gender == 'male':
                user.gender = 'M'
            elif gender == 'female':
                user.gender = 'F'
            user.save()
    
    0 讨论(0)
提交回复
热议问题