Python-social-auth中用户名字段的问题

n.i*_*imp 6 python django python-social-auth

我正在使用Python socia auth for face-book.我修改了用户模型的默认Django行为并删除了username字段.

我在自定义用户模型中添加了这个: USERNAME_FIELD = 'email'

BUt我在尝试登录时遇到此错误

TypeError at /complete/facebook/
'username' is an invalid keyword argument for this function
Run Code Online (Sandbox Code Playgroud)

我知道什么时候它试图创建用户它没有找到用户名字段,这就抛出了这个错误.

我已经定义了以下设置,但我的问题仍然存在:

SOCIAL_AUTH_USER_MODEL = 'accounts.User'
SOCIAL_AUTH_USERNAME_IS_FULL_EMAIL = True
Run Code Online (Sandbox Code Playgroud)

对此有何解决方案?

eza*_*rii 6

我知道问题发布后的几个月,但我遇到了同样的问题并找到了解决方案.

使用管道可以解决这个问题.默认管道执行此操作:

def create_user(strategy, details, user=None, *args, **kwargs):
    if user:
        return {'is_new': False}

    fields = dict((name, kwargs.get(name) or details.get(name))
                  for name in strategy.setting('USER_FIELDS',
                                               USER_FIELDS))
    if not fields:
        return

    return {
        'is_new': True,
        'user': strategy.create_user(**fields)
    }
Run Code Online (Sandbox Code Playgroud)

USER_FIELDS在您的设置中覆盖结束仅留下email.或者,您可以创建全新的create_user方法.