2011-12-19 52 views
7

我有自定義的文本框部件和我的項目中的許多窗體。要使用此自定義部件,我需要寫:全球formfield_overriding在Django

formfield_overrides = { 
    TextField: {'widget': CustomTextFieldWidget}, 
} 

admin.ModelAdmin形式,這只是醜陋。

有沒有辦法只寫一次並在項目中的所有窗體上使用自定義小部件?

回答

7

不,沒有掛鉤來覆蓋整個項目中的formfield小部件。

您可以讓所有的模型管理類繼承自admin.ModelAdmin的子類,那麼您只需設置formfield_overrides一次。

class MyModelAdmin(admin.ModelAdmin): 
    """ 
    This is the parent class that all model 
    admins in the project inherit from 
    """ 
    formfield_overrides = { 
     TextField: {'widget': CustomTextFieldWidget}, 
    } 

class AppleAdmin(MyModelAdmin): 
    ... 

class BananaAdmin(MyModelAdmin): 
    ... 

#etc