2012-04-06 5 views
24

Djangoの管理者は、モデル(Invoiceモデルなど)に対して独自のフォームをオーバーライドして実装したいと考えています。Djangoのフォームを上書きするadmin

請求書フォームに顧客名、製品名の自動入力フィールドを追加し、カスタムの確認(顧客の与信限度額など)もしたいと考えています。どのように私はDjangoの管理者によって提供されるデフォルトのフォームをオーバーライドし、自分自身を実装することができますか?

私はDjangoを初めて使用しています。

答えて

38

ModelAdminのフォーム属性を独自のフォームクラスに設定することで、djangoの組み込み管理者のフォームをオーバーライドできます。あなたはオートコンプリートのために特別に探しているなら、私はDjangoの管理者にフォームを上書きする方法https://github.com/crucialfelix/django-ajax-selects

+0

フォームの表示方法を上書きすることはできますか?選択したフィールドの自動完成機能付き。 – 18bytes

+1

確かに - 私は自分の答えを更新しました。 – fest

+0

adminオートコンプリートをお探しの場合、私はdjango-ajax-selectを使用しませんでしたが、[django-autocomplete-light](http://django-autocomplete-light.readthedocs.io/en/master/)は間違いなく価値があります:) – GabLeRoux

14

をお勧めすることができますそれはhttps://docs.djangoproject.com/en/dev/ref/contrib/admin/#custom-template-options

を見てテンプレート - フォームを上書きすることも可能ですhttps://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formhttps://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin

を参照してください。 docs

from django import forms 
from django.contrib import admin 
from myapp.models import Person 

class PersonForm(forms.ModelForm): 

    class Meta: 
     model = Person 
     exclude = ['name'] 

class PersonAdmin(admin.ModelAdmin): 
    exclude = ['age'] 
    form = PersonForm 
+0

このコードはmodels.pyまたはadmin.pyに配置しますか?また、私が作成したアプリを参照するのは、Personアプリケーションがどこに来るかです。 –

+0

@KehlinSwain:人はモデルです。このコードはadmin.py、またはadmin.pyからインポートする外部のform.pyにあります。 –

関連する問題