Найти - Пользователи
Полная версия: contrib.Auth models.Manager заместить своим
Начало » Django » contrib.Auth models.Manager заместить своим
1
Evg
Вообщем использую дефолтное джанговское приложение contrib.Auth нужно заменить менеджер для модели User на свой, а точнее в этой модели User есть свой класс UserManager который наследуется от базового Manager
Так вот нужно подменить так чтобы класс UserManager наследовался не от Manager а от моего класса CustomManager.
Причем сделать это динамически (тк нету доступа к исходнику и не хочется его менять).

Позволяют ли средства питона сделать такое и если да то как и в каком месте проводить такую модификацию?

Есть мысль в __init__.py просто сделать замену объекта User.objects:
from django.contrib.auth.models import User
User.objects = ...
Но тут встает проблема как заменить классу UserManager его родительский класс на мой CustomManager и затем создать объект.

Подскажите как лучше сделать такое?
slav0nic
думал написать, но проще было нагуглить)
http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/

всё очевидно
Evg
Ну вообще мне не нужно было ничего расширять) а именно подменить родительский класс менеджера User) ответ на это тут
Ferroman
А для чего такое надо было?
Evg
Ferroman
А для чего такое надо было?
Расширял джангу чтобы могла в разные бд модели проецировать. Сначало заменял дефолтные менеджеры чтобы они выбирали нужное соединение. Но потом все свелось к тому что проще пропатчить конструктор базового класса BaseQuery.
vvp91
slav0nic
думал написать, но проще было нагуглить)
http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/
всё очевидно
К сожалению, не все очевидно.
Сделал, как описал Скотт в этой статье.
Наткнулся на то, что вход в админку перестал работать.
Ошибка <'NoneType' object has no attribute ‘DoesNotExist’> возникает в “списаном файле” account\backend.py:
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
...
Теперь не особо понимаю, куда смотреть.
slav0nic
18 камент смотри, вообще ничего не мешает написать по другому
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB