2015-04-02 51 views
3

我使用Python socia auth作为面书。我修改了用户模型的默认Django行为并删除了username字段。Python-social-auth中用户名字段的问题

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

而是试图登录

TypeError at /complete/facebook/ 
'username' is an invalid keyword argument for this function 

当它试图创建用户没有找到用户名,我知道,当我得到这个错误领域和这抛出这个错误。

我已经定义了如下设置,但仍然是我的问题仍然存在,因为它是:

SOCIAL_AUTH_USER_MODEL = 'accounts.User' 
SOCIAL_AUTH_USERNAME_IS_FULL_EMAIL = True 

这个任何解决方案?

+0

您是否找到针对此问题的解决方案?我面对完全相同的问题。 – Anurag 2015-07-08 07:04:09

回答

2

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

这个问题可以用管道来解决。缺省管线做到这一点:

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) 
    } 

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