Социальная авторизация Django для facebook дает ошибку

Я использую:

  • Джанго-социальная аутентификация v 0.7.19
  • Джанго 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 pipe.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. Когда я удаляю из своей модели поля username, last_login и is_active, социальная аутентификация выдает ошибку DataBaseError, так как эти столбцы необходимы. Я беру пользователя ForeignKey, но он не может его обнаружить.

  2. Я переопределяю метод социальной аутентификации create_user, чтобы создать своего пользователя и его профиль. Когда функция возвращается, пользователь и профиль создаются, но все же перенаправляются на страницу ошибки. Не могу понять почему.


person Zain Khan    schedule 18.02.2013    source источник


Ответы (1)


Попробуйте изменить создание профиля с помощью этого кода:

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

Или добавьте некоторые значения по умолчанию в эти поля.

Изменить: аргумент ключевого слова является значением по умолчанию, а не значением по умолчанию.

person omab    schedule 22.02.2013