2010-05-22 2 views
1

Я пытаюсь расширить модель пользователя, так что я могу добавить свои собственные поля, но я получаю сообщение об ошибке с указанием:Расширения модели пользователя с настраиваемыми полями в Django

объекта «NoneType» не имеет атрибута '_default_manager'

всякий раз, когда я пытаюсь использовать

user.get_profile()

добавить значения в пользовательские поля, т.е. каждый раз, когда я использую его следующим образом:

пользователя = User.objects.create_user (имя пользователя, адрес электронной почты, пароль)

user.first_name = имя_файла

user.last_name = LNAME

user.save()

uinfo = user.get_profile()

uinfo.timezone = "Азия/Пуна"

uinfo.save()

Я уже выполнили шаги, приведенные в Extending the User model with custom fields in Django не повезло.

ответ

2

Прежде всего: вы абсолютно уверены, что вы установили правильное значение для AUTH_PROFILE_MODULE в файл settings.py? Поскольку исключение должно выглядеть иначе, если для этого пользователя не было UserProfile. (DoesNotExist)

В любом случае: в это время объект UserProfile отсутствует, поскольку он не генерируется автоматически. Таким образом, get_profile() вызывает исключение в вашем случае.

Либо это сделать:

if not UserProfile.objects.filter(user=user): 
    p = UserProfile(user=user) 
    p.save() 
uinfo = user.get_profile() 
... 

или создать сигнал как (свободно) описано в http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

Смежные вопросы