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.
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()