在Django admin中,我想重寫和實現我自己的模型(例如Invoice模型)。覆蓋Django中的表單admin
我希望發票表單具有客戶名稱,產品名稱的自動填寫字段,並且我還想執行自定義驗證(例如客戶的信用限額)。我如何重寫由Django管理員提供的默認表單並實現我自己的?
我是Django的新手,我很欣賞任何指針。
在Django admin中,我想重寫和實現我自己的模型(例如Invoice模型)。覆蓋Django中的表單admin
我希望發票表單具有客戶名稱,產品名稱的自動填寫字段,並且我還想執行自定義驗證(例如客戶的信用限額)。我如何重寫由Django管理員提供的默認表單並實現我自己的?
我是Django的新手,我很欣賞任何指針。
您可以通過將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
它也可以覆蓋表單模板 - 看看https://docs.djangoproject.com/en/dev/ref/contrib/admin/#custom-template-options
如果你專門爲自動完成的樣子,我可以推薦https://github.com/crucialfelix/django-ajax-selects
如何覆蓋在Django管理形式根據docs:
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
我將這段代碼放在models.py或admin.py中。 Person應用程序還會在哪裏引用我創建的應用程序? – 2016-04-14 16:21:41
@KehlinSwain:人就是模特。此代碼可以位於admin.py中,也可以位於從admin.py中導入的外部form.py中。 – 2016-04-14 16:24:19
是否有可能重寫窗體的外觀方式?具有選定字段的自動完成功能。 – 18bytes 2012-04-06 09:53:40
它確實是 - 我更新了我的答案。 – fest 2012-04-06 11:06:20
如果你正在尋找管理自動完成,我沒有使用django-ajax選擇,但[django-autocomplete-light](http://django-autocomplete-light.readthedocs.io/en/master/)是絕對值得:) – GabLeRoux 2016-12-15 15:59:47