0

すべてのモデルにこのマネージャーを継承させる必要があります(このマネージャーをテストしていないので、ばかげているかもしれないので、提案や批判も完全に受け入れています):

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)

あなたは私がやろうとしていることを見ることができます。私が扱っているアカウントに基づいて、どこでもフィルターで除外する必要性を制限します。

このマネージャーを私のすべてのモデルで動作させるための最良の方法は何でしょうか?それを使った抽象的なベースモデル?また、ビューレベルからアカウント変数をどのように渡すのですか?これはすべて間違っていて邪悪ですか?私は今一週間これを征服する方法を見つけようとしてきました:(。

4

1 に答える 1

2

いいえ。マネージャーはクラス属性としてインスタンス化されるため、すべてのモデルインスタンスに同じマネージャーが与えられます。

于 2010-01-29T15:29:00.950 に答える