'staticmethod'Object没有属性'short_description'

时间:2016-05-04 06:22:42

标签: django django-admin pylint

我正在编写一个非常普通的django管理类,其自定义操作如下:

class DeviceAdmin(admin.ModelAdmin):
    actions = ("enable", "disable")

    def enable(self, request, queryset):
        queryset.update(active=True)
    enable.short_description = _("Enable selected items")

    def disable(self, request, queryset):
        queryset.update(active=False)
    disable.short_description = _("Disable selected items")

现在pylint抱怨selfenable中没有使用disable,这些方法可以是函数(或staticmethod)

添加@staticmethod装饰器会导致django出错。

  

AttributeError:'staticmethod'对象没有属性'short_description'

我的问题是,如何使django和pylint都快乐?

1 个答案:

答案 0 :(得分:0)

我也找到了这个问题,但是,我读了Django代码。您可以阅读django.contrib.admin.options#1270,我们定义的admin func不是类的“真实”方法,django代码使用{{1 }}来获取您的函数,然后使用self.get_actions(request)[action][0]来运行它,因此,您不能使用func(self, request, queryset)来解决pylint警告。