2011-08-15 7 views
10

list_editableModelAdminに使用している場合、編集可能なフィールドに使用されているウィジェットを変更する方法はありますか?私はドキュメントで何も見つけることができません。これはあなたがカスタマイズできるようなものだろう。list_editableとwidgets

+0

誰かが疑問に思っている場合、問題のフィールドはDateTimeフィールドであり、djangoが使用するデフォルトの日付時刻ウィジェットは多くのスペースを占め、実際にはグリッドフォーマットでは機能しません。単純な 'TextInput'ウィジェットに置き換えたいと思います。 –

答えて

17

オーバーライドあなたModelAdminクラスのget_changelist_form方法、そのような:

def get_changelist_form(self, request, **kwargs): 
    kwargs.setdefault('form', MyAdminForm) 
    return super(MyModelAdmin, self).get_changelist_form(request, **kwargs) 

そして、別途定義MyAdminForm修正:

class MyAdminForm(forms.ModelForm): 
    class Meta: 
    model = MyModel 
    my_field = forms.DateField(widget=widgets.AdminDateWidget()) 

これは、ためのウィジェットで表さmy_fieldを行います単なる一例です日付のみ(時間なし)。それはリストビューでははるかによく見えます。

+1

なぜ '' get_changelist_form''でsuper()を使うのですか?ドキュメントでは、彼らは '' return ModelForm''を使用します。https://docs.djangoproject.com/en/1.5/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_changelist_form ... – lechup

+0

私はちょうど気づいた、それは2歳の質問です:) – lechup

7

あなただけウィジェット(django 1.5でテスト)(あなたがラベル電気ショック療法を設定する必要はありません。)この構文を使用することで変更する場合:

widgets辞書キー辞書です
from django import forms 

class OfferForm(forms.ModelForm): 
    class Meta: 
     model = Offer 
     widgets = { 
      'description' : forms.Textarea(
       attrs={ 
        'cols': '20', 
       } 
      ) 
     } 

をフィールドの名前であり、値はオーバーライドするウィジェットを表します。ジャンゴのためdocumentation状態として

1.5以降だけにそのも可能:

class OfferAdmin(admin.ModelAdmin): 
    def get_changelist_form(self, request, **kwargs): 
     return OfferForm 

任意のsuper()kwargsジャグリングなし。

関連する問題