django-social-auth
реализует конвейер (это, кажется, новая функция, которой не было, когда я ее пробовал), которая позволяет вам вставлять пользовательские функции на определенных этапах процесса аутентификации.Проверьте документы здесь и пример функции трубопровода здесь.
Таким образом, вы можете написать функцию:
SOCIAL_AUTH_PIPELINE = (
'social_auth.backends.pipeline.social.social_auth_user',
'social_auth.backends.pipeline.associate.associate_by_email',
'social_auth.backends.pipeline.user.get_username',
'app.pipeline.custom_create_user',
'social_auth.backends.pipeline.social.associate_user',
'social_auth.backends.pipeline.social.load_extra_data',
'social_auth.backends.pipeline.user.update_user_details'
)
, где ваша custom_create_user
функция оборачивает значение по умолчанию create_user
и создает имя пользователя в соответствии с вашими потребностями:
from social_auth.backends.pipeline.user import create_user
def custom_create_user(request, *args, **kwargs):
user = *kwargs.get('user', None)
# Do something with username
return create_user(request, args, kwargs)