(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介绍了变化。
当我 运行 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介绍了变化。