没有调用Django admin change_view

时间:2018-03-12 01:40:50

标签: django django-admin

我正试图以这种方式为模型重新定义ModelAdmin:

class MakeModelAdmin(admin.ModelAdmin):

    ...

    # def changeform_view(self, request, object_id, form_url='', extra_context=None):
    #     if not request.user.is_superuser:
    #         self.exclude = ('company',)
    #     extra_context = extra_context or {}
    #     return super().changeform_view(request, object_id, form_url, extra_context=extra_context,)

    def change_view(self, request, object_id, form_url='', extra_context=None):
        if not request.user.is_superuser:
            self.exclude = ('company',)
        extra_context = extra_context or {}
        return super().change_view(request, object_id, form_url, extra_context=extra_context,)


admin.site.register(Make, MakeModelAdmin)

但是没有调用方法change_view

同时,调用注释代码changeform_view。 我检查过,ModelAdmin包含两种方法。

我无法弄清楚为什么在调用“changeform_view”时调用“change_view”(显然在取消注释时)。

文档建议change_view: https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.change_view

我正在使用Django 2.0.2

1 个答案:

答案 0 :(得分:0)

change_view仅在模型实例编辑页面上被调用,因此在编辑现有模型实例时

changeform_view将在模型实例的所有页面上调用(添加,编辑和删除)

如果要添加新的模型实例,则需要使用add_view。

文档中概述了

change_view,add_view和delete_view https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.change_view