'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
警告。
我正在为我的 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
警告。