在django管理界面的更改列表視圖中,如果他們獲得表達式,是否可以將某些字段/行標記爲紅色?如果表達式爲真,那麼在django管理界面中爲字段更改字體/顏色
例如,如果有一個模型Group
與members
和capacity
,我怎麼能當他們是全或擁擠想象?
在django管理界面的更改列表視圖中,如果他們獲得表達式,是否可以將某些字段/行標記爲紅色?如果表達式爲真,那麼在django管理界面中爲字段更改字體/顏色
例如,如果有一個模型Group
與members
和capacity
,我怎麼能當他們是全或擁擠想象?
要修改更改列表視圖中的顯示方式和內容,可以使用list_display
選項ModelAdmin
。
請注意,list_display
中給出的不是真正的數據庫字段的列不能用於排序,所以需要給Django管理員一個關於哪個數據庫字段實際用於排序的提示。
通過將admin_order_field
屬性設置爲用於包裝HTML中某些值的可調用對象來實現此目的。從Django文檔
舉例豐富多彩的領域:
class Person(models.Model):
first_name = models.CharField(max_length=50)
color_code = models.CharField(max_length=6)
def colored_first_name(self):
return '<span style="color: #%s;">%s</span>' % (
self.color_code, self.first_name)
colored_first_name.allow_tags = True
colored_first_name.admin_order_field = 'first_name'
class PersonAdmin(admin.ModelAdmin):
list_display = ('first_name', 'colored_first_name')
我希望一些這有助於。
此外,還可以使用
colored_first_name.short_description = 'first name'
一個不錯的列標題
這是一個老問題,但由於在接受的答案使用allow_tags
屬性是我從文檔添加一個例子Django 1.10
因爲Django 1.9
過時,建議使用format_html代替:
from django.db import models
from django.contrib import admin
from django.utils.html import format_html
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
color_code = models.CharField(max_length=6)
def colored_name(self):
return format_html(
'<span style="color: #{};">{} {}</span>',
self.color_code,
self.first_name,
self.last_name,
)
class PersonAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'colored_name')
謝謝.allow_tags做了這份工作。 – kelvan 2010-08-11 08:02:04
偉大的答案@rebus。無論如何,將'colored_first_name'函數和attrs綁定到'PersonAdmin'而不是模型?爲模型指定特定於管理員的attrs似乎很奇怪。 – cooncesean 2014-04-29 16:43:03
@cooncesean是的,list_display的值可以是模型或管理類中方法的字符串名稱,也可以是對可調用對象的引用。 [查看文檔以獲取更多示例](https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display) – 2014-04-29 17:00:02