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