我正在为我的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的自述文件中,我了解到这是一个已知问题:
“如果您通过外键模型的名称(作为字符串)引用外键模型,则pylint-django可能无法找到该模型,并且会报告问题,因为它不知道此字段的基础类型是什么。” >
我的问题是:我该怎么办?我宁愿不禁止所有C0111
警告。
非常感谢您的帮助!
PS:我使用的是Using Pylint with Django上回答的pylint-django
答案 0 :(得分:1)
您可以禁止某些代码 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):
# pylint: disable=E1101
first_name = self.user.first_name
last_name = self.user.last_name
return f'{first_name} {last_name}'
在这里,您将仅对特定的E1101
方法禁用__str__
。如果要在同一块中重新启用该错误,则可以在要取消#pylint: enable=E1101
警告的块末尾写入E1101
。