4

有没有一种方法可以将 ModelAdmin 中的字段的 short_description 定义为可调用的 - 有时人们想在列名中提供额外的动态信息。

或者是否有任何丑陋的黑客可以实现相同的目标?

4

2 回答 2

2

据我所知/记得属性只能在类定义中的新型类上定义。因此,您的ModelAdmin字段必须解析为具有所需属性的可调用对象。这个片段在我看来应该允许:

https://djangosnippets.org/snippets/2447/

该字段本身成为一个属性,该属性解析为VotesToday该类的一个实例,该实例short_description也是一个属性。

于 2013-11-10T04:44:06.447 回答
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__自己将其传递给初始化程序。

于 2013-11-11T18:29:43.060 回答