web-dev-qa-db-ja.com

Django adminでフォームをオーバーライドする

In Django admin adminモデル(請求書モデルなど)の独自のフォームをオーバーライドおよび実装したい。

請求書フォームに顧客名、製品名の自動入力フィールドを追加し、カスタム検証(顧客の与信限度など)も行いたい。 Django adminによって提供されるデフォルトのフォームをオーバーライドして独自のフォームを実装するにはどうすればよいですか?

私はDjangoを初めて使用します。ご意見をお寄せください。

34
18bytes

ModelAdminのフォーム属性を独自のフォームクラスに設定することにより、Djangoの組み込み管理用のフォームをオーバーライドできます。見る:

  1. https://docs.djangoproject.com/en/dev/ref/contrib/admin/#Django.contrib.admin.ModelAdmin.form
  2. https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin

フォームテンプレートをオーバーライドすることも可能です- https://docs.djangoproject.com/en/dev/ref/contrib/admin/#custom-template-options をご覧ください

オートコンプリートを特に探している場合は、お勧めできます https://github.com/crucialfelix/Django-ajax-selects

48
fest

docs に従ってDjango adminでフォームをオーバーライドする方法:

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
22
dan-klasson