mee*_*son 7 django null django-admin changelist
当数据库中的字段为空时,Django会在显示更改列表时插入"(None)"来保留null的位置.虽然是描述性的,但是当更改列表中有很多字段时,它会使所有内容都非常繁忙,而空白字段在哪里会有所帮助,但更不会混乱.那么有没有办法改变Django用于表示变更列表中的空字段的文本?如果解决方案是特定于modeladmin或管理员范围,则无关紧要.
还应该添加我知道您定义自定义字段然后输出空字符串的解决方案.这可行,但是在使列不可移动时,这是显示之前的优先级,因此它不是一个选项.
D R*_*bio 16
从Django 1.9开始,此行为已更改,并添加了一些自定义功能以支持您描述的情况的解决方案.
使用Django 1.9,Django现在使用' - '(破折号)而不是"(无)"来显示Django管理员中的NULL.
此外,您现在可以为Django管理员自定义此默认的' - '(破折号)显示,其中包含empty_value_display:global,特定管理类或特定字段:
全球:
# In settings.py to show '???' instead of '-' for all null django admin values
from django.contrib import admin
admin.site.empty_value_display = '???'
Run Code Online (Sandbox Code Playgroud)
对于Django管理类中的所有字段:
# admin.py to show "Unknown Item field" instead of '-' for null values in all Item fields
class ItemAdmin(admin.ModelAdmin):
empty_value_display = 'Unknown Item field'
Run Code Online (Sandbox Code Playgroud)
对于单个字段:
# admin.py to show "No known price" instead of '-' just for null price values in Item
class ItemAdmin(admin.ModelAdmin):
list_display = ('name','price_view')
def price_view(self, obj):
return obj.price
price_view.empty_value_display = 'No known price'
Run Code Online (Sandbox Code Playgroud)
您可以使用此解决方法覆盖单个ModelAdmin行为:
from django.contrib.admin.views import main
...
...
...
class MyModelAdmin(admin.ModelAdmin):
def __init__(self,*args,**kwargs):
super(MyModelAdmin, self).__init__(*args, **kwargs)
main.EMPTY_CHANGELIST_VALUE = '-'
Run Code Online (Sandbox Code Playgroud)
注意:覆盖__init__()与@admin.register()装饰器无关,而是admin.site.register(Model, ModelAdmin)在Model定义类之后需要调用.
| 归档时间: |
|
| 查看次数: |
2809 次 |
| 最近记录: |