(MyPy) 缺少通用类型的类型参数 "ModelAdmin"

(MyPy) Missing type parameters for generic type "ModelAdmin"

当我 运行 mypy 时,我得到这个错误:

emails/admin.py:43: error: Missing type parameters for generic type "ModelAdmin"

这是对应的代码片段:

@admin.register(Message)
class MessageAdmin(admin.ModelAdmin):
    list_display = ('subject', 'thread', 'user', 'email_account', 'from_name', 'from_email', 'local_timestamp')
    search_fields = ('subject','thread__synced_with_email', 'user__username', 'email_account__synced_email_current', 'from_name', 'from_email')
    ordering = ('subject', 'thread')

这个 class 不完全是一个函数,所以我不明白为什么 mypy 检查类型提示。没有任何返回值,也没有传递任何参数。

发生这种情况是因为 运行-时间依赖性,mypy 无法弄清楚。 要消除错误,您需要像 pip install django-stubs-ext.

安装 django_stubs_ext

然后在您的设置文件中添加这两行。

import django_stubs_ext
django_stubs_ext.monkeypatch()

admin.ModelAdmin 绑定到特定模型,例如 admin.ModelAdmin[Message]

一样修改admin.py文件
@admin.register(Message)
class MessageAdmin(admin.ModelAdmin[Message]):
    list_display = ('subject', 'thread', 'user', 'email_account', 'from_name', 'from_email', 'local_timestamp')
    search_fields = ('subject','thread__synced_with_email', 'user__username', 'email_account__synced_email_current', 'from_name', 'from_email')
    ordering = ('subject', 'thread')

相关PR介绍了变化。