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

Django管理站点:添加用户页面如何工作(编辑更多字段)?,django,django-models,django-admin,django-forms,django-templates,Django,Django Models,Django Admin,Django Forms,Django Templates,我想知道他们是如何在Django管理站点的用户页面中显示更多字段的。 如果您创建了一个新用户,您只需要填写一些基本字段,但是如果您重新打开该用户(编辑模式),那么您将看到更多的字段需要填写 我也在努力实现同样的目标,我看了一下add\u form.html模板,但我真的无法理解它。我想我正在寻找一种根据文档的编辑状态指定不同字段=[]集的方法 谢谢 答案在于。它覆盖了ModelAdmin上的两个方法,并检查当前请求是否正在创建新的用户(在这种情况下,使用用于添加帐户的基本表单类)或编辑现有用户(

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

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


谢谢

答案在于。它覆盖了
ModelAdmin
上的两个方法,并检查当前请求是否正在创建新的
用户(在这种情况下,使用用于添加帐户的基本表单类)或编辑现有用户(在这种情况下,将显示完整表单)。

下面是我的尝试。当我尝试创建一个新项目(添加)时,它只显示某些字段,但当我点击“保存”时,它返回一个错误:

DoesNotExist
在get的/Library/Python/2.6/site-packages/django/db/models/fields/related.py中,第288行

管理员

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

具体请参见
get\u form
:umh。。。。谢谢你的链接。我不能真正理解代码(或者更好地理解它是如何工作的)。编辑表单时是否将obj设置为“无”?默认对象做什么?如果您能举一个简单的例子,说明我如何将此功能用于我自己的模型(在创建模式下显示一些字段,在编辑模式下显示一些字段),我将不胜感激。谢谢