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 に答える