2
我在共享管理器类中覆盖了“get
”方法,但我无法弄清楚如何获取初始调用者。例如,当我运行:如何在覆盖管理器时访问Django模型?
Animal.objects.get() -or- Plant.objects.get()
我怎么能有“get
”知道这是从动物/植物叫不经过任何参数?
这里是我的参考代码:
class CommonManager(models.Manager):
def get(self, *args, **kwargs):
print ??? #how do I print Animal or Plant here?
class CommonModel(models.Model):
objects = CommonManager()
#stuff
class Animal(CommonModel):
#stuff
class Plant(CommonModel):
#stuff
这工作!非常感谢,我可以问一下你看过哪部分源代码?我是Django的新手,经常遇到与文档有关的问题。 – WBC
它在https://docs.djangoproject.com/en/dev/topics/db/managers/#django.db.models.Manager中提到(“有关此示例的另一个要注意的是,Manager方法可以访问self.model以获得他们所附的模型类“)。虽然这很容易错过;如果你没有其他简单的方法来浏览代码/超类,那么在做一个dir(self)的时候放入Python调试器通常是一个很好的策略。 –
只需''经理'在'django/db/models/manager.py'中。 – AKX