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__
自分で初期化子に渡します。