我想要做的是當某個模型使用我的字段時,它會自動將自定義管理器添加到該模型。如何從字段添加管理器
據我所知,contibute_to_class提供這樣的功能
class MyCustomField(CharField):
def contribute_to_class(self, cls, name):
super(MyCustomField, self).contribute_to_class(cls, name)
setattr(cls, 'custom_manager', CustomManager())
的問題是,在我的自定義管理器,我使用self.model._default_manager做查詢的默認管理器,但是當我嘗試這樣做, django說屬性錯誤:'NoneType'對象沒有屬性'_default_manager'
如果我不使用contribution_to_class並寫自定義管理器是我的模型類,它按預期工作。可能是什麼問題?
手動設置manager.model是hacky和fragile。這只是Manager.contribute_to_class的一部分 - 真正的解決方案是確保Manager.contribute_to_class被正確調用。 – 2009-03-04 16:02:03