2011-08-30 7 views
1

の上にカスタムメソッド私の見解ではいくつかのコードは次のようになりますと仮定します:ジャンゴORM、クエリセット

bar = Bar.objects.get(pk=1) 
foos = bar.foo_set.filter(VERY_LONG_COMPLEX_FILTERING_LOGIC) 

私は明らかにフィルタ法を少しきれいにしたいと思う、そのカスタムメソッドを作成することにより、そのような同じこと、ない:

bar = Bar.objects.get(pk=1) 
foos = bar.foo_set.complexfilter() 

クラスにどこかにカスタムメソッドを移動するには、完璧なものだろうが、今のところ、私は、ドキュメント内のそのようなものの一切の言及を見つけることができませんでした。助言がありますか?

ありがとうございます。

答えて

0

barさんの方法では良いと思われます。

+0

大丈夫なので、foo_setも同様に呼び出す必要があると思います。:def complexfilter(self):return self.foo_set.filter(); bar.complexfilter()。だから、foo_setプロパティの上でカスタムを行うことはできませんか? – murmun

+0

foo_setを変更するには、カスタムマネージャを使用する必要はありませんか? – Dave

+0

@murmun私はそれが可能だとは思わないが、本当にそれが必要ですか?代わりに、 'Foo'モデル用のcusomマネージャを作成し、パラメータとして' bar'を渡すこともできます。 – DrTyrsa

関連する問題