使用Pylint与Django

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (37)

我很想把pylint在我的python项目的构建过程中,但是我遇到了一个显示停止:我认为非常有用的错误类型之一---:E1101: *%s %r has no %r member*-在使用通用Django字段时经常报告错误,例如:

E1101:125:get_user_tags: Class 'Tag' has no 'objects' member

它是由以下代码引起的:

def get_user_tags(username):
   """
   Gets all the tags that username has used.

   Returns a query set.
   """
   return Tag.objects.filter(  ## This line triggers the error.
       tagownership__users__username__exact=username).distinct()

# Here is the Tag class, models.Model is provided by Django:
class Tag(models.Model):
   """
   Model for user-defined strings that help categorize Events on
   on a per-user basis.
   """
   name = models.CharField(max_length=500, null=False, unique=True)

   def __unicode__(self):
       return self.name

如何对Pylint进行调优以适当地考虑对象等字段?(我还查看了Django的源代码,并且一直无法找到objects,所以我怀疑它不仅仅是一个类字段。另一方面,我对python相当陌生,所以我很可能忽略了一些东西。)

我发现告诉pylint不要警告这些警告的唯一方法是阻止所有类型的错误(E 1101),这是一个不可接受的解决方案,因为在我看来,这是一个非常有用的错误。如果有另一种方法,而不增加pylint源代码,请告诉我具体情况:)

关于我遇到的问题的总结pycheckerpyflakes-事实证明,对于一般用途来说,它们还远远不够稳定。(在pycheckker的例子中,崩溃起源于pycheckker代码--而不是它正在加载/调用的源。)

提问于
用户回答回答于

我使用以下方法:pylint --generated-members=objects

用户回答回答于

不要通过添加ignoresgenerated-members...

使用一个积极开发的Pylint插件。

Django的Pylint插件效果很好:

pip install pylint-django

在运行pylint时,向命令中添加以下标志:

--load-plugins pylint_django

扫码关注云+社区