我正在编写一个非常普通的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抱怨self
没有在enable
和disable
中使用,并且这些方法可以是函数(或静态方法)
然而,添加@staticmethod
装饰器会导致django出现错误。
AttributeError:"staticmethod"对象没有属性"shortdescription"
我的问题是,我该如何让詹戈和皮林都开心?
我也发现了这个问题,但是,我读了django代码。你可以阅读django.contrib.admin.options#1270,我们定义了一个admin函数不是类的"真实"方法,django代码使用self.get_actions(request)[action][0]
来获取你的函数,然后使用func(self, request, queryset)
来运行它,所以,你不能使用@staticmethod
来解决pylint警告。