有時,不希望顯示布爾型字段的「開/關」圖標。在Django中禁用布爾型字段的開/關圖標
例子:
error
字段顯示一個快樂的綠色的「OK」圖標時,有一個錯誤或blocked=True
顯示爲綠色的「OK」,而blocked=False
爲「禁止入內」的跡象。
在這種情況下,最好保留原始的True
/False
行爲。
有沒有比創建特殊方法更優雅的方法返回例如self.error
並將short_description
,,等添加到它?
有時,不希望顯示布爾型字段的「開/關」圖標。在Django中禁用布爾型字段的開/關圖標
例子:
error
字段顯示一個快樂的綠色的「OK」圖標時,有一個錯誤或blocked=True
顯示爲綠色的「OK」,而blocked=False
爲「禁止入內」的跡象。在這種情況下,最好保留原始的True
/False
行爲。
有沒有比創建特殊方法更優雅的方法返回例如self.error
並將short_description
,,等添加到它?
沒有DIR tiness在使用此代碼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_blocked
將返回False
顯示爲您所需的紅色圖標。
編輯
如果你想使用的話True/False
而不是紅色/綠色的圖標,你可以在上面的代碼中設置
is_blocked_col.boolean = False
。
是的,這很有道理。這個想法是,在yes/no圖標不好的情況下,True/False字符串並不好。所以自定義方法是不可避免的。添加'admin_order_field',這樣仍然可以排序,我會接受你的回答。 –
@AntonyHatchkins我已經更新了我的答案。我也測試了它,並且每件事都按要求運作。謝謝 –
我想你可以通過javascript和css來設計你的模板。
可以看到這些鏈接: On/Off Button, IOS Buttons, Switch Buttons, CSS3 Buttns
我覺得它太容易使用其中的任何
GOOD LUCK REGARDS
穆罕默德
我不需要額外的功能,只是相反我想禁用開/關圖標,只留下'True' /'False'消息。 –
當你有額外的功能..你可以選擇其中之一 – Mohammad
我甚至可以顯示一個狗大聲叫'是'和一隻貓喵喵'不'。但那不是我需要的。我需要'真實'/'假'行爲,我希望這不會是一件大事。 –
我檢查了對口onding 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
或東西(這我不知道如何實現)
你檢查了我的答案嗎? –
不知道我是否理解你的問題。您能否以一個真實的例子來詳細說明。 – andrefsp
想象一下'User'模型,它有一個字段'is_blocked'。默認管理小部件在用戶被阻止時顯示_green_圖標,在用戶未被阻止時顯示_red_圖標。這是違反直覺的。 –