我在一个 django 网站上工作,想定义一些实例方法,如下所示。
Class Auth(models.Model):
def wrap_has_perm(self, perm):
def wrap():
if self.is_staff and self.has_perm(perm):
return True
else:
return False
can_add_order = wrap_has_perm('finance.normal')
can_review_order = wrap_has_perm('finance.review')
is_leader = wrap_has_perm('finance.leader')
is_finance = wrap_has_perm('finance.finance')
我想使用can_add_order
, can_review_order
, is_leader
,is_finance
作为 django 管理站点的 list_display 元素。但是现在这些实例方法是非法的。(TypeError: wrap_has_perm() 正好需要 2 个参数(1 个给定))
我怎样才能实现这些方法?
如果我使用部分:
def staff_has_perm(self, perm):
return self.is_staff and self.has_perm(perm)
can_add_order = partial(staff_has_perm, perm='finance.normal')
can_review_order = partial(staff_has_perm, perm='finance.review')
is_leader = partial(staff_has_perm, perm='finance.leader')
is_finance = partial(staff_has_perm, perm='finance.finance')
它引发(* TypeError:staff_has_perm() 正好需要 2 个参数(1 个给定));我应该传递self
给以及如何传递?