我想知道他们是如何在Django管理站点的用户页面中显示更多字段的。 如果您创建一个新用户,您只需要填写一些基本字段,但如果您重新打开该用户(编辑模式),那么您会看到更多要填写的字段。
我正在努力实现同样的目标,我看了一下add_form.html
模板,但我无法理解它。我想我正在寻找一种根据文档的编辑状态指定不同字段= []集的方法。
谢谢!
答案 0 :(得分:2)
答案在于the custom admin class registered for the User model。它覆盖了ModelAdmin
上的几个方法,并检查当前请求是否正在创建新的User
(在这种情况下,使用了用于添加帐户的裸骨形式类)或编辑现有的(在这种情况下会显示完整的表格)。
答案 1 :(得分:1)
这是我的尝试。当我尝试创建一个新项目(添加)时,它只显示某些字段,但是当我点击保存时它返回一个错误:
DoesNotExist
/Library/Python/2.6/site-packages/django/db/models/fields/related.py in get ,第288行
admin.py
from django.contrib import admin
from myapp.catalog.models import Model
from myapp.catalog.forms import ProductAdminForm, ProductAddForm
class ProductAdmin(admin.ModelAdmin):
form = ProductAdminForm
#...
add_form = ProductAddForm
def get_form(self, request, obj=None, **kwargs):
defaults = {}
if obj is None:
defaults.update({
'form': self.add_form,
})
defaults.update(kwargs)
return super(ProductAdmin, self).get_form(request, obj, **defaults)
forms.py
from myapp.catalog.models import Product
class ProductAdminForm(forms.ModelForm):
class Meta:
model = Product
#...
class ProductAddForm(forms.ModelForm):
class Meta:
model = Product
fields = ("model", "colour",)