首页 > 解决方案 > 为什么我收到 pylint 错误:值“self.body”不可订阅?

问题描述

我正在尝试获取从正文返回前 50 个字符的摘要方法。

class Blog(models.Model):
    # Title for the Blog
    title = models.CharField(max_length=255)

    # Blog body
    body = models.TextField()

    def __str__(self):
        return self.title

    def summary(self):
        return self.body[:50]  # I get the error here

标签: pythondjango

解决方案


您的 linter 感到困惑,因为它期望是不支持下标的self.body实例。models.TextField然而,Django 的 ORM 实际上会self.body用一个支持下标的字符串替换。Django 用元类做了相当多的魔术来提供这个接口,不幸的是,linter 通常不够聪明,无法检测到这一点。


推荐阅读