【问题标题】:Overloading changelist_view with no changes causing errors重载 changelist_view 而没有导致错误的更改
【发布时间】:2019-01-17 17:11:19
【问题描述】:

重载changelist_view并调用super()会导致属性错误。

我正在创建一个超级基本仪表板,并且我正在覆盖 ModelAdmin 类的 changelist_view 方法。但是,此覆盖会导致错误“NoneType 对象没有属性‘has_header’。”但是,我实际上并没有做任何事情,只是覆盖了 changelist_view 并调用了超类——我还没有做任何更改。

在 admin.py 中

class SummaryAdmin(admin.ModelAdmin):

    def changelist_view(self, request, extra_context=None):
        response = super().changelist_view(request, extra_context)

models.py中对应的模型

class Summary(Failure):
    class Meta:
        proxy = True
        verbose_name = 'Failure Summary'
        verbose_name_plural = 'Failures Summary'

这实际上是管理模型的全部内容。当我尝试进入 django 管理面板时,出现属性错误。据我所知,这应该与根本不覆盖 changelist_view 没有什么不同,但是如果我删除覆盖,一切都会正常运行。

更新:我实际上是从 options.py 中复制了 changelist_view 代码,而不是调用超类,但我没有收到此错误,所以我怀疑这与我调用超类的方式有关。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    上述代码的问题是它缺少返回语句。 changelist_view 返回响应,不返回的重载会导致各种错误。如果您习惯于在忘记返回或与指定类型不匹配时无法编译的语言,那么这是一个容易犯的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-09
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多