'str' 的 Pylint Django 模型实例没有成员

Pylint Django model instance of 'str' has no member

我正在为我的 Django 项目使用 pylint-django,我的模型之一如下:

class Registration(models.Model):
    date_added = models.DateTimeField(auto_now_add=True)
    event = models.ForeignKey(Event, on_delete=models.CASCADE)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

    def __str__(self):
        first_name = self.user.first_name
        last_name = self.user.last_name
        return f'{first_name} {last_name}'

运行 pylint,我收到以下警告:

events/models.py:61:21: E1101: Instance of 'str' has no 'first_name' member (no-member)

根据 pylint-django 的自述文件,我了解到这是一个已知问题:

"If you reference foreign-key models by their name (as string) pylint-django may not be able to find the model and will report issues because it has no idea what the underlying type of this field is."

我的问题是:我应该怎么做才能处理这个问题?我不想禁止所有 C0111 警告。

非常感谢您的帮助!

PS:我正在使用 Using Pylint with Django

上的回答的 pylint-django

您可以抑制某个代码的警告 block:

class Registration(models.Model):
    date_added = models.DateTimeField(auto_now_add=True)
    event = models.ForeignKey(Event, on_delete=models.CASCADE)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

    def __str__(self):
        <b># pylint: disable=E1101</b>
        first_name = self.user.first_name
        last_name = self.user.last_name
        return f'{first_name} {last_name}'

因此,您将在此处仅为该特定 __str__ 方法禁用 E1101。如果你想 re-enable 同一个块中的错误,你可以在块的末尾写 #pylint: enable=E1101 你希望抑制 E1101 警告。