Django管理站点:添加用户页面如何工作(编辑更多字段)?

时间:2010-10-14 00:34:00

标签: django django-models django-admin django-forms django-templates

我想知道他们是如何在Django管理站点的用户页面中显示更多字段的。 如果您创建一个新用户,您只需要填写一些基本字段,但如果您重新打开该用户(编辑模式),那么您会看到更多要填写的字段。

我正在努力实现同样的目标,我看了一下add_form.html模板,但我无法理解它。我想我正在寻找一种根据文档的编辑状态指定不同字段= []集的方法。

谢谢!

2 个答案:

答案 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",)