1

I managed to setup allauth to work on my project and use the social media login. However I was wondering if they had any option to set the e-mail fetched Facebook to the username. I read their documentation but I couldn't see any of that in the variables.

I found this link, but they change Django's core files. I was hoping to find something more suitable.

My current configuration:

ACCOUNT_USER_MODEL_EMAIL_FIELD = 'email'
ACCOUNT_USER_MODEL_USERNAME_FIELD = 'email'
SOCIALACCOUNT_QUERY_EMAIL = True
SOCIALACCOUNT_EMAIL_REQUIRED = True

Also, is it possible to use only the social media login/creation creation from Allauth? I can see it is possible to create an account if you access localhost/accounts/create/ (or a similar url). I don't need that since I have my own account creation page.

Community
  • 1
  • 1
Ev.
  • 1,537
  • 1
  • 24
  • 49

1 Answers1

5

Well, you don't need to change Django files. Just add this to your models.py:

from django.db.models.signals import pre_save

@receiver(pre_save, sender=User)
def update_username_from_email(sender, instance, **kwargs):
    instance.username = instance.email

Assuming an e-mail has been given, it will set the e-mail as the username every time a new user is about to be saved to the database.

Ev.
  • 1,537
  • 1
  • 24
  • 49