Django 管理员。当对象具有布尔字段== True时,如何为列表视图中的每一行添加背景颜色?

Posted

技术标签:

【中文标题】Django 管理员。当对象具有布尔字段== True时,如何为列表视图中的每一行添加背景颜色?【英文标题】:Django Admin. How to add background color for each row in list view, when object has boolean field == True? 【发布时间】:2018-11-20 09:51:19 【问题描述】:

我的环境是:Django 2.0.6,Python 3.6.4

我有标准的 Django Admin(内联编辑):

当对象具有字段is_active_city=True 时,如何为列表视图中的每一行添加背景颜色?比如background-color: green;代表is_active_city=True,像这样:

【问题讨论】:

不使用第三方应用程序的示例:***.com/a/4021083/2091925 @WillKeeling 是的,它适用于每个单独的单元格,但不适用于整行。 @Bijoy 你能告诉我,你在 Django 2.x 上检查非第三方示例的作品吗? 【参考方案1】:

有一个包django-liststyle可以满足你的需要

使用pip install django-liststyle==0.2b安装它

然后在 settings.py 中将'liststyle' 添加到INSTALLED_APPS 列表中。

所以现在相关模型的 admin.py 将是

from liststyle import ListStyleAdminMixin

class CityAdmin(admin.ModelAdmin, ListStyleAdminMixin):
    ...
    def get_row_css(self, obj, index):
        if obj.is_active_city:
            return 'green'
        return 'red'  # or any color for False

注意:如果有关于future 包错误的问题,请参考此link

【讨论】:

这个包在 Django 2.x 中不起作用。显示TemplateSyntaxError: 'future' is not a registered tag library. 但是My env is: Django 2.0.6, Python 3.6.4 我在第一个问题中写道。那么,django-liststyle 不支持 Python 3.x 和/或 Django 2.x?为什么推荐给我? 这个包兼容python 3,如果它支持python 3那我肯定会推荐它。 但老实说我没有检查django 2 @VicShóstak 你能告诉我你的错误的完整追溯

以上是关于Django 管理员。当对象具有布尔字段== True时,如何为列表视图中的每一行添加背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

Django:管理员:在管理员中更改字段的小部件

django admin 在 save_model 方法中删除内联对象

Django:如何在同一对象中提到的时间自动更改字段的值?

如何在搜索栏中按布尔字段过滤 - django

Django:更改查询集中所有对象的字段值

Django 1.8.3 - 具有相关对象的模型字段验证