如何保存电子邮件等于用户名 Allauth 社交媒体帐户 Django

Ev.*_*Ev. 1 django django-allauth

我设法设置 allauth 来处理我的项目并使用社交媒体登录。不过我想知道他们是否有任何选项可以将获取 Facebook 的电子邮件设置为用户名。我阅读了他们的文档,但在变量中看不到任何内容。

我找到了这个链接,但是他们改变了 Django 的核心文件。我希望能找到更合适的东西。

我当前的配置:

ACCOUNT_USER_MODEL_EMAIL_FIELD = 'email'
ACCOUNT_USER_MODEL_USERNAME_FIELD = 'email'
SOCIALACCOUNT_QUERY_EMAIL = True
SOCIALACCOUNT_EMAIL_REQUIRED = True
Run Code Online (Sandbox Code Playgroud)

另外,是否可以仅使用 Allauth 的社交媒体登录/创建?我可以看到,如果您访问 localhost/accounts/create/ (或类似的网址),则可以创建一个帐户。我不需要它,因为我有自己的帐户创建页面。

Ev.*_*Ev. 5

好吧,您不需要更改 Django 文件。只需将其添加到您的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
Run Code Online (Sandbox Code Playgroud)

假设已经给出了电子邮件,每次将新用户保存到数据库时,它都会将电子邮件设置为用户名。