2011-12-19 9 views
7

私はカスタムのテキストフィールドウィジェットと私のプロジェクトでは多くのフォームがあります。すべてのadmin.ModelAdmin形でdjangoでグローバルformfield_overriding

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

、それは単に醜い:このカスタム・ウィジェットを使用するには、私はに記述する必要があります。

これを一度だけ書き、プロジェクトのすべてのフォームでカスタムウィジェットを使用する方法はありますか?

答えて

7

いいえ、プロジェクト全体でフォームフィールドウィジェットをオーバーライドするフックはありません。

すべてのモデル管理クラスをサブクラスadmin.ModelAdminから継承させることができます。次に、formfield_overridesを1回設定するだけです。

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 
関連する問題