Django: Модель наследуется от базовой модели с помощью собственного менеджера. Может ли менеджер иметь динамические переменные? - PullRequest
0 голосов
/ 29 января 2010

Мне нужно, чтобы все мои модели унаследовали этого менеджера (этот менеджер не тестировался, и он может быть нелепым, поэтому я также полностью открыт для предложений / критики по нему):

class AccountFilterManager(models.Manager):
    def __init__(self, account=None, *args, **kwargs):
        super(AccountFilterManager, self).__init__(*args, **kwargs)
        self.account = account  # account of course will be an instance of Account(models.Model)

    def get_query_set(self):
        if self.account:
            return super(AccountManager,self).get_query_set().filter(account=self.account)

Ты видишь, что я пытаюсь сделать. ограничить необходимость отфильтровывать всюду, основываясь на том, с каким аккаунтом я имею дело.

Как лучше всего заставить этого менеджера работать со всеми моими моделями? Абстрактная базовая модель с этим? Кроме того, как я собираюсь передать переменную account в нее с уровня просмотра? Это все неправильно и зло? Я пытаюсь найти способ победить это уже неделю: (.

1 Ответ

2 голосов
/ 29 января 2010

Нет. Менеджер создается как атрибут класса, тем самым предоставляя всем экземплярам модели одного и того же менеджера.

...