我試圖修改現有的Django Mezzanine安裝程序以允許我在Markdown中進行博客。夾層具有帶有內容作爲被像這樣限定的HtmlField一個「核心」模型:如何在Django模型字段上覆蓋此方法
from django.db.models import TextField
class HtmlField(TextField):
"""
TextField that stores HTML.
"""
def formfield(self, **kwargs):
"""
Apply the class to the widget that will render the field as a
TincyMCE Editor.
"""
formfield = super(HtmlField, self).formfield(**kwargs)
formfield.widget.attrs["class"] = "mceEditor"
return formfield
的問題來自於widget.attrs mceEditor的[「類」。我的想法是猴子修補博客對象
class BlogPost(Displayable, Ownable, Content):
def __init__(self, *args, **kwargs):
super(BlogPost, self).__init__(*args, **kwargs)
self._meta.get_field('content').formfield = XXX
我的問題是我的Python的技能在內容領域都沒有達到與調用super
拉姆達更換綁定的方法的任務。
當管理員想要創建一個顯示在管理頁面上的字段時,formfield被調用,所以我需要修補它以使BlogPost窗口小部件對象不具有mceEditor類(我試圖離開mceEditor在所有其他的東西)
你如何製作替代功能?我敢肯定,我
setattr(self._meta.get_field('content'), 'formfield', method_i_dont_know_how_to_write)
那麼,這兩種方式有幾個MODS的工作: '如果field.name == '內容':' 應該 '如果db_field。 name =='content':' 和'instancemethod'至少需要2個參數(第二個參數是字段)。如果你能解決這兩件事,我會接受它作爲答案。 感謝您的幫助。 – boatcoder 2010-12-11 03:44:11
修復了它......如果您想了解更多有關覆蓋python實例方法的信息:http://irrepupavel.com/documents/python/instancemethod/ – 2010-12-11 13:07:57