有时,不希望显示布尔型字段的“开/关”图标。在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_图标。这是违反直觉的。 –