Наследование от пользовательской модели django приводит к ошибке при смене пароля - PullRequest
1 голос
/ 01 июня 2010

Я унаследовал от модели пользователя django примерно так:

from django.db import models
from django.contrib.auth.models import User, UserManager
from django.utils.translation import ugettext_lazy as _

class NewUserModel(User):
    custom_field_1 = models.CharField(_('custom field 1'), max_length=250, null=True, blank=True)
    custom_field_2 = models.CharField(_('custom field 2'), max_length=250, null=True, blank=True)

    objects = UserManager()

Когда я иду к администратору и добавляю запись в эту модель, она отлично сохраняется, но под полем «Пароль», где есть этот текст: «Использовать» [algo] $ [соль] $ [hexdigest] 'или использовать форма смены пароля. », если я нажму на ссылку« сменить форму пароля », появится сообщение об ошибке

Truncated incorrect DOUBLE value: '7/password'

Что я могу сделать, чтобы это исправить?

Ответы [ 2 ]

1 голос
/ 02 июня 2010

Лучший способ расширить модель пользователя Django - создать новую модель профиля и идентифицировать ее с помощью параметра AUTH_PROFILE_MODULE. См. http://www.b -list.org / weblog / 2006 / jun / 06 / django-tips-extension-user-model / и http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

Это добавляет метод get_profile() к экземплярам пользователя, который извлекает связанную модель для данного пользователя.

0 голосов
/ 02 июня 2010

Хотя выполнимо (я сделал это один раз и сожалею об этом), использование наследования для расширения модели User - не лучшая идея. Я бы посоветовал вам воспользоваться советом Криса и расширить модель User с отношением 1: 1, поскольку это «стандартный» и «поддерживаемый» способ сделать это, а также способ, которым многократно используемые приложения работают с профилями пользователей. В противном случае вам нужно реализовать аутентификационный бэкэнд, если вы хотите сделать это по наследству. Так что, если вы ДОЛЖНЫ сделать это, посмотрите это . Но будьте осторожны, позже вы столкнетесь с другими проблемами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...