これはDjangoウィザードの質問です。Django Object Managerの問題
class MyObjManager(models.Manager):
def total_values(self, myobj_id):
return 49
def what_the_heck(self, poll_id):
return 48
class TestMe():
def what_the_heck(self, poll_id):
return 47
を今、私は動作するようには思えない、次のようにこのオブジェクトマネージャを使用するモデルを作成する場合、次のように私はラインに沿って、オブジェクトマネージャの何かを継承しています。
class MyObj(models.Model):
x = models.CharField(max_length=200)
y = models.DateTimeField('date published')
objects = MyObjManager()
kb = MyObjManager()
testMe = TestMe()
def total_values(self):
#A return self.objects.total_values(1)
#B return self.objects.yyy(1)
#C return self.kb.what_the_heck(1)
#D return 50
#E return self.testMe.what_the_heck(1)
#F return self.objects.what_the_heck(1)
ここで、A、B、C、D、Eがそれぞれ1つずつコメントアウトされているとします。 myObj.total_valuesを呼び出すと結果は次のようになります。 (ここで、このmyobjはこのmyobjのインスタンスである) A)なし B)なし C)なし D)50 E)47 F)私は、この例では2つのオブジェクトマネージャを使用した
何も、同じ私は1つしか使用しないと事が起こります。なぜオーバーライドされたオブジェクトマネージャのメソッドにアクセスできないのかについての洞察はありますか?
"NameError"。 "id"とは何ですか?それは "self.id"であってはなりませんか? "B"と記されたステートメントで、この "yyy()"メソッドはどこに定義されていますか?また、 "total_votes()"はどこに定義されていますか? – ayaz
私はIDを修正しました(私はこの記事のリファクタリング中にそれを逃しました)。 yyyは定義されていませんが、エラーを起こすことはありません。 – Daniel