在Django admin中重写表单

时间:2021-08-27 19:18:56

In Django admin I want to override and implement my own form for a model (e.g. Invoice model).

在Django admin中,我想重写并实现一个模型的表单(例如,Invoice模型)。

I want the invoice form to have auto-fill fields for customer name, product name and I also want to do custom validation (such as credit limit for a customer). How can I override the default form provided by Django admin and implement my own?

我希望发票表单有客户名称、产品名称的自动填充字段,我还希望进行自定义验证(比如客户的信用额度)。如何覆盖Django admin提供的默认表单并实现自己的表单?

I am new to Django, I appreciate any pointers.

我是Django的新手,我很欣赏任何指示。

2 个解决方案

#1


38  

You can override forms for django's built-in admin by setting form attribute of ModelAdmin to your own form class. See https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form and https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin

通过将ModelAdmin的表单属性设置为您自己的表单类,您可以覆盖django的内置管理表单。看到https://docs.djangoproject.com/en/dev/ref/contrib/admin/ django.contrib.admin.ModelAdmin.form和https://docs.djangoproject.com/en/dev/ref/contrib/admin/ # adding-custom-validation-to-the-admin

It's also possible to override form template- have a look at https://docs.djangoproject.com/en/dev/ref/contrib/admin/#custom-template-options

也可以重写表单模板——查看https://docs.djangoproject.com/en/dev/ref/后悔/admin/#定制模板选项

If you're looking specifically for autocomplete I can recommend https://github.com/crucialfelix/django-ajax-selects

如果您正在寻找autocomplete,我可以推荐https://github.com/crucialfelix/django- ajax-selected

#2


14  

How to override a form in the django admin according to the docs:

如何根据文档重写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

#1


38  

You can override forms for django's built-in admin by setting form attribute of ModelAdmin to your own form class. See https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form and https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin

通过将ModelAdmin的表单属性设置为您自己的表单类,您可以覆盖django的内置管理表单。看到https://docs.djangoproject.com/en/dev/ref/contrib/admin/ django.contrib.admin.ModelAdmin.form和https://docs.djangoproject.com/en/dev/ref/contrib/admin/ # adding-custom-validation-to-the-admin

It's also possible to override form template- have a look at https://docs.djangoproject.com/en/dev/ref/contrib/admin/#custom-template-options

也可以重写表单模板——查看https://docs.djangoproject.com/en/dev/ref/后悔/admin/#定制模板选项

If you're looking specifically for autocomplete I can recommend https://github.com/crucialfelix/django-ajax-selects

如果您正在寻找autocomplete,我可以推荐https://github.com/crucialfelix/django- ajax-selected

#2


14  

How to override a form in the django admin according to the docs:

如何根据文档重写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