2013-02-18 71 views
0

我使用:Django的社会身份验证为Facebook给了一个错误

  • Django的社会权威性v 0.7.19
  • 的Django 1.4.3

models.py:

class UserProfile(models.Model): 
    user = models.ForeignKey(User) 
    username = models.CharField(max_length = 64, blank = True, null = True) 
    last_login = models.DateField(blank = True, null = True) 
    is_active = models.BooleanField(blank = True) 

social_auth pipeline.py:

from social_auth.backends.pipeline.user import create_user 


def create_user(backend, details, response, uid, username, user=None, *args, 
      **kwargs): 

    if user: 
     return {'user': user} 
    if not username: 
     return None 

    user, created = User.objects.get_or_create(username = username) 
    profile, created = UserProfile.objects.get_or_create(user = user) 

    return { 
     'user': user, 
     'profile' : profile, 
     'is_new': True 
    } 

问题:

  1. 当我拿出领域的用户名,从我的模型LAST_LOGIN和IS_ACTIVE,社会AUTH会给我一个DataBaseError这些列是必要的。我正在使用ForeignKey用户,但无法检测到它。

  2. 我重写create_user社交身份验证方法来创建我的用户及其个人资料。当函数返回时,会创建一个用户和配置文件,但它仍会在错误页面上重定向。无法弄清楚原因。

回答

0

尝试使用此代码更改个人资料创建:

profile, created = UserProfile.objects.get_or_create(user=user, defaults={ 
    'username': user.username, 
    'last_login': date.today(), 
    'is_active': True 
}) 

或者增加一些默认值,这些领域。

编辑:关键字参数是默认值不是默认值。