7

ブール値フィールドに「オン/オフ」アイコンを表示することが望ましくない場合があります。

例:

  • errorエラーが発生した場合、またはエラーが発生した場合、フィールドに緑色の「OK」アイコン
  • blocked=True緑の「ok」と表示され、blocked=False「進入禁止」の標識として表示されます。

そのような場合は、元の動作を維持する方がよいでしょTrueFalse

たとえば、特別なメソッドを作成して、などをself.error追加するよりもエレガントな方法はありますか?short_descriptionordering

4

3 に答える 3

12

このコードを使用しても汚れはありませんadmin.py:

from mysite.models import Test
from django.contrib import admin

class TestAdmin(admin.ModelAdmin):
    list_display = ('is_blocked_col',)

    def is_blocked_col(self, obj):
        return not obj.is_blocked # invert the boolean value
    is_blocked_col.boolean = True
    is_blocked_col.admin_order_field = 'is_blocked'
    is_blocked_col.short_description  = 'Is Blocked'

admin.site.register(Test, TestAdmin)

この方法を使用すると、オン/オフ アイコンが表示されます。is_blocked=Trueその後、必要に応じて赤いアイコンとして表示されるものが返されますreturn not obj.is_blockedFalse

編集

True/False赤/緑のアイコンの代わりに単語を使用したい場合は、設定できます

is_blocked_col.boolean = False

上記のコードで。

于 2012-12-23T18:50:12.880 に答える
1

対応するdjangoコードを調べましたが、残念ながらこの動作はハードコーディングされているため、唯一の解決策は質問に記載されているものです:

is_blocked = BooleanField(default=False)

def is_blocked_col(self):
    return self.is_blocked
is_blocked_col.short_description = \
is_blocked_col.admin_order_field = 'is_blocked'

これは、次のようなものよりもはるかに読みにくい

is_blocked = BooleanField(default=False)
is_blocked.boolean = False

(これは機能しません)

または、管理ウィジェットを何かに強制するよりもforce_unicode(実装方法がわかりません)

于 2012-12-23T18:06:03.423 に答える
0

テンプレートを設計するためにjavascriptとcssで処理できると思います。

これらのリンクを見ることができます: オン/オフ ボタンIOS ボタンスイッチ ボタンCSS3ボタン

どれも使いやすすぎると思います

よろしくお願いします

ムハンマド

于 2012-12-22T12:16:17.893 に答える