0

通常、私はを介してクエリセットにアクセスしますSomeModel.objects()

objectsモデル内で、が のような Manager として定義されていることに気付きましたobjects=SomeManager()

では、Manager 内でメソッドを定義している場合、どのようにアクセスすればよいでしょうobjectsか?

のように...

class SomeManager(models.Manager):
    def some_method(self):
        ( HOW WOULD I ACCESS OBJECTS HERE? )

class SomeModel(models.Model):
    ... blah blah
    objects=SomeManager()

何かをフィルタリングしたい場合はSomeModel.objects.filter、マネージャー内で行うことができると思いますが、どういうわけかそれは奇妙に感じます. それは何かのようなself.filterものでしょうか?

4

2 に答える 2

1

短い答え: マネージャー自体からアクセスすることはありません。経由ですべてのメソッドにアクセスできるため、必要はありませんself

objectsこの場合はマネージャーです。通常はマネージャーを使用して次のようなものにアクセスするため、filterまたはをget使用してクラスでローカルにアクセスできます。self.filterself.get

select_relatedマネージャーによって返されるすべてのクエリセットに適用されるようなものが必要な場合は、get_querysetメソッドをオーバーライドできます。

于 2013-06-26T13:36:19.147 に答える