Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python(Django):';self.text';不可预订_Python_Django_Django Models - Fatal编程技术网

Python(Django):';self.text';不可预订

Python(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

我在学习Django的书《Django初学者》,有一个奇怪的问题。下面的代码片段实际上可以工作,但Pylint不断向我显示错误,我知道错误发生了。但作者对此却无所作为。有人知道为什么吗?代码片段来自我的应用程序文件夹的models.py

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
对象。元类逻辑将传递一个可下标的字符串。谢谢。伙计。知道了。