在Django中,我需要創建一個模型,其中該模型的一個實例可以從該模型的另一個實例繼承值,該值等於超類 - 子類型關係。我在這個模型中創建了一個名爲parent的字段,它是一個可選的自引用外鍵。那麼我想重寫__getattribute__方法如下:在Django中覆蓋Model類的__getattribute__
def __getattribute__(self, name):
if models.Model.__getattribute__(self, 'parent') is None:
return models.Model.__getattribute__(self, name)
elif models.Model.__getattribute__(self, name) is not None:
return models.Model.__getattribute__(self, name)
else:
return parent.__getattribute__(name)
此代碼會導致無限遞歸,因爲模型類的__get__方法調用內置的方法在實例GETATTR傳遞作爲第一個參數。
有沒有另一種方法可以完成我想要做的事情?
很公平。我懷疑是這樣。謝謝你的幫助。 – 2009-12-10 04:30:54