简体   繁体   English

覆盖 Django 管理员中的表单

[英]Override a form in Django admin

In Django admin I want to override and implement my own form for a model (eg Invoice model).在 Django admin 中,我想覆盖并实现我自己的 model 表单(例如发票模型)。

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 管理员提供的默认表单并实现我自己的表单?

I am new to Django, I appreciate any pointers.我是 Django 的新手,感谢任何指点。

You can override forms for django's built-in admin by setting form attribute of ModelAdmin to your own form class. See:您可以通过将 ModelAdmin 的表单属性设置为您自己的表单 class 来为 django 的内置管理覆盖 forms。请参阅:

  1. https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form 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/#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/contrib/admin/#custom-template-options

If you're looking specifically for autocomplete I can recommend https://github.com/crucialfelix/django-ajax-selects如果您专门寻找自动完成功能,我可以推荐https://github.com/crucialfelix/django-ajax-selects

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM