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.
#app/models.py
@receiver(user_signed_up)
@receiver(user_logged_in)
def set_gender(sender, **kwargs):
user = kwargs.pop('user')
extra_data = user.socialaccount_set.filter(provider='facebook')[0].extra_data
gender = extra_data['gender']
if gender == 'male':
user.gender = u'M'
elif gender == 'female':
user.gender = u'F'
user.save()
But I've noticed that for normal accounts when I try to sign up at /accounts/signup or sign in at /accounts/login I got this error:
Exception Type: IndexError
Exception Value: list index out of range
However normal users are succesfully saved to database, I only have this error after registration and login.
I think this cause the problem:
extra_data = user.socialaccount_set.filter(provider='facebook')[0].extra_data