所以,这里是一个Django向导的问题。Django对象管理器问题
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分别被一个一个注释掉。如果我调用myObj.total_values,结果如下。 (其中MyObj中是MyObj中的实例) A)没有 B)没有 C)没有什么 d)50 E)47 F)没有什么
我使用了两个对象管理器在本实施例中,但同样的如果我只使用一个,情况就会发生。任何洞察为什么我似乎无法访问我的覆盖对象管理器中的方法?
声明标有“A”应该产生一个“NameError”。什么是“ID”?它不应该是“self.id”吗?在标记为“B”的语句中,此“yyy()”方法的定义在哪里?另外,“total_votes()”在哪里定义? – ayaz 2009-06-24 14:58:54
我修复了这个ID(我错过了这个帖子的重构)。 yyy甚至没有定义,但最终并没有抛出一个错误。 – Daniel 2009-06-24 15:00:08