有没有办法在ModelAdmin中将字段的short_description定义为可调用 - 有时候想要在列名中提供额外的动态信息。
或者是否有任何丑陋的黑客可以实现相同的目标?
答案 0 :(得分:2)
据我所知/记住属性只能在类定义中的新式类上定义。因此,您的ModelAdmin
字段必须解析为具有所需属性的可调用对象。这个片段在我看来应该允许:
https://djangosnippets.org/snippets/2447/
字段本身成为一个属性,解析为VotesToday
类的实例,short_description
也是一个属性。
答案 1 :(得分:1)
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__
初始化程序。