Пользовательский менеджер моделей для auth_user - PullRequest
1 голос
/ 08 сентября 2011

Я хочу включить двух дополнительных менеджеров для модели auth user, active и inactive, чтобы они были активными или неактивными пользователями.Вот как должна выглядеть модель (даже если она недействительна):

from django.contrib.auth.models import User

class ActiveManager(models.Manager):
    def get_query_set(self):
        return super(ActiveManager, self).get_query_set().filter(active=True)

class InactiveManager(models.Manager):
    def get_query_set(self):
        return super(InactiveManager, self).get_query_set().filter(active=False)

class User(models.Model):
    # user model...

    all_users = models.Manager()
    objects = ActiveManager()
    inactive = InactiveManager()

Где / как именно я разместил бы ее, чтобы я мог выполнить запрос, например User.inactive.all()?Спасибо.

1 Ответ

0 голосов
/ 08 сентября 2011

Вам нужно будет использовать метод contribute_to_class в вашем менеджере.Вместо класса User, который у вас есть, вам понадобится что-то вроде этого:

InactiveManager.contribute_to_class(User, 'inactive')

Я подозреваю, что не имеет значения, где именно вы это делаете, пока это происходит хорошо и рано (до того, как выиспользуйте его!) - где-то models.py будет выглядеть смутно правильным.

...