Wagtail中RichTextField适配Pylance类型检查的问题咨询
我最近碰到个闹心的问题:几乎所有Wagtail模型文件在Pylance下都飘满了错误提示,但代码实际跑起来完全正常。这些错误大多出在RichTextField的属性定义上,比如下面这个简单的示例:
from wagtail.models import Page from wagtail.fields import RichTextField class SpecialPage(Page): introduction = RichTextField( blank=True, features=settings.RICHTEXT_ADVANCED, help_text="Text that appears at the top of the page.", )
这里的RICHTEXT_ADVANCED是我配置文件里定义的list[str]类型变量。这段代码逻辑完全没问题——传给RichTextField的所有参数,要么属于它自身的__init__方法,要么来自父类的__init__。但VS Code里的Pylance却把introduction的三行参数全标红了,提示内容如下:
No overloads for "new" match the provided arguments
Argument types: (Literal[True], Any, Literal['Text that appears at the top of the page.']) Pylance(reportCallIssue)
我现在有点犯难:这是Pylance的bug吗?有没有什么更优雅的解决办法,而不是给几百行代码加# type: ignore,或者关掉那些能帮我排查真bug的Pylance规则?另外,Wagtail官方能不能补充更明确的类型提示或者@overload标记,从根源上避免这类错误提示?
对了,我查过RichTextField的继承链:RegisterLookupMixin > Field(包含blank和help_text参数)> TextField(包含features参数)> RichTextField。这些类里都没有定义__new__方法,我传的参数类型也完全符合父类的定义。我目前用的是Wagtail 5.x版本,是不是更新的版本里这个问题已经被修复了?
备注:内容来源于stack exchange,提问作者phette23

