Python(Django):';self.text';不可预订
我在学习Django的书《Django初学者》,有一个奇怪的问题。下面的代码片段实际上可以工作,但Pylint不断向我显示错误,我知道错误发生了。但作者对此却无所作为。有人知道为什么吗?代码片段来自我的应用程序文件夹的models.pyPython(Django):';self.text';不可预订,python,django,django-models,Python,Django,Django Models,我在学习Django的书《Django初学者》,有一个奇怪的问题。下面的代码片段实际上可以工作,但Pylint不断向我显示错误,我知道错误发生了。但作者对此却无所作为。有人知道为什么吗?代码片段来自我的应用程序文件夹的models.py from django.db import models # Create your models here. class Post(models.Model): text = models.TextField() def __str__(s
from django.db import models
# Create your models here.
class Post(models.Model):
text = models.TextField()
def __str__(self):
return self.text[:50]
我的vscode编辑器中的pylint错误消息为-
值“self.text”不可订阅
我的环境:
Win 10、Python 3.6、Django 3.0.1
下面的代码片段实际上可以工作,但Pylint不断向我显示一个错误。有人知道为什么吗
是的,因为Pylint不“理解”模型元类和字段中实现的逻辑。因此,它认为self.text
将返回TextField
对象,该对象实际上是不可下标的。然而,元类将为self.text
注入一个字符串
有一种方法对Django的工作原理有更好的理解,尽管它仍然“有限”。作为其列出的功能之一:
- 修复pylint对模型和表单字段属性类型的了解
所以通常它会解决这个问题。例如,尽管对于自定义模型字段它可能仍然失败。这是因为Pylint不理解Django的元类等的“逻辑”用法。文本是一个不可下标的
TextField
对象。元类逻辑将传递一个可下标的字符串。谢谢。伙计。知道了。