覆盖Django管理员中的表单

18b*_*tes 35 python django django-models django-admin django-views

在Django管理员中,我想覆盖并实现我自己的模型形式(例如Invoice模型).

我希望发票表单有自动填写客户名称,产品名称的字段,我也想进行自定义验证(例如客户的信用额度).如何覆盖Django管理员提供的默认表单并实现我自己的?

我是Django的新手,我很欣赏任何指针.

fes*_*est 50

您可以通过将ModelAdmin的表单属性设置为您自己的表单类来覆盖django内置管理员的表单.请参阅https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formhttps://docs.djangoproject.com/en/dev/ref/contrib/管理员/#添加定制验证到的管理员

也可以覆盖表单模板 - 看看https://docs.djangoproject.com/en/dev/ref/contrib/admin/#custom-template-options

如果你正在寻找专门的自动完成,我可以推荐https://github.com/crucialfelix/django-ajax-selects


dan*_*son 22

如何根据文档覆盖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
Run Code Online (Sandbox Code Playgroud)

  • 我是否将此代码放置在models.py或admin.py中。另外,Person应用程序又在哪里呢?这是指我创建的应用程序吗? (2认同)