Форум сайта python.su
Вообщем использую дефолтное джанговское приложение contrib.Auth нужно заменить менеджер для модели User на свой, а точнее в этой модели User есть свой класс UserManager который наследуется от базового Manager
Так вот нужно подменить так чтобы класс UserManager наследовался не от Manager а от моего класса CustomManager.
Причем сделать это динамически (тк нету доступа к исходнику и не хочется его менять).
Позволяют ли средства питона сделать такое и если да то как и в каком месте проводить такую модификацию?
Есть мысль в __init__.py просто сделать замену объекта User.objects:
from django.contrib.auth.models import User
User.objects = ...
Отредактировано (Сен. 21, 2009 22:30:13)
Офлайн
думал написать, но проще было нагуглить)
http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/
всё очевидно
Офлайн
Ну вообще мне не нужно было ничего расширять) а именно подменить родительский класс менеджера User) ответ на это тут
Офлайн
А для чего такое надо было?
Офлайн
FerromanРасширял джангу чтобы могла в разные бд модели проецировать. Сначало заменял дефолтные менеджеры чтобы они выбирали нужное соединение. Но потом все свелось к тому что проще пропатчить конструктор базового класса BaseQuery.
А для чего такое надо было?
Офлайн
slav0nicК сожалению, не все очевидно.
думал написать, но проще было нагуглить)
http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/
всё очевидно
class UserProfileModelBackend(ModelBackend):
def authenticate(self, username=None, password=None):
try:
user = self.user_class.objects.get(username=username)
if user.check_password(password):
return user
except self.user_class.DoesNotExist: # здесь возникает ошибка!
return None
...
Офлайн
18 камент смотри, вообще ничего не мешает написать по другому
Офлайн