Переопределить форму в администраторе Django

В Django admin я хочу переопределить и реализовать свою собственную форму для модели (например, модель счета-фактуры).

Я хочу, чтобы в форме счета были поля автозаполнения для имени клиента, имени продукта, и я также хочу выполнить выборочную проверку (например, кредитный лимит для клиента). Как я могу переопределить форму по умолчанию, предоставленную администратором Django, и реализовать свою собственную?

Я новичок в Django, я ценю любые указатели.

Ответ 1

Вы можете переопределить формы для встроенного администратора django, установив атрибут формы ModelAdmin в свой собственный класс форм. Увидеть:

  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

Ответ 2

Как переопределить форму в admin django в соответствии с документами:

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