有没有一种方法可以将 ModelAdmin 中的字段的 short_description 定义为可调用的 - 有时人们想在列名中提供额外的动态信息。
或者是否有任何丑陋的黑客可以实现相同的目标?
有没有一种方法可以将 ModelAdmin 中的字段的 short_description 定义为可调用的 - 有时人们想在列名中提供额外的动态信息。
或者是否有任何丑陋的黑客可以实现相同的目标?
据我所知/记得属性只能在类定义中的新型类上定义。因此,您的ModelAdmin
字段必须解析为具有所需属性的可调用对象。这个片段在我看来应该允许:
https://djangosnippets.org/snippets/2447/
该字段本身成为一个属性,该属性解析为VotesToday
该类的一个实例,该实例short_description
也是一个属性。
Peter DeGlopper 的回答提供了所需的方向——尽管自从 djangosnippet 发布以来,很多事情都发生了变化。
这确实有效:
class MyAdmin(admin.ModelAdmin):
list_display = ('my_callable')
class MyCallable:
def __call__(self, obj):
return 42
@property
def __name__(self):
return 'Galaxy'
@property
def my_callable(self):
if not hasattr(self, __my_callable):
self.__my_callable = self.MyCallable()
return self__my_callable
重要的是,MyAdmin
对象不会传递给MyCallable.__call__()
调用 - 如果您需要访问它,请__init__
自己将其传递给初始化程序。