django admin 在 list_display 中截断文本

django admin truncate text in list_display

需要在管理中截断文本list_display

管理模型中有以下内容,但仍显示全文。

from django.template.defaultfilters import truncatewords

def get_description(self, obj):
    return truncatewords(obj.description, 10)
get_description.short_description = "description"

class DieTaskAdmin(admin.ModelAdmin):
    list_display =['severity','priority', 'subject', 'status','created',get_description.short_description']

admin.site.register(DieTask, DieTaskAdmin)

即描述字段的原始文本包含超过 255 个字符。 我喜欢只显示前 10 个字符加上 ...

我必须在模型中创建一个 属性,如下所示:

from django.template.defaultfilters import truncatechars
...

@property
    def short_description(self):
        return truncatechars(self.description, 35)

并在管理员中使用 short_descriptioin 到 trim 文本。

就我个人而言,我会避免在模型 methods/properties 中使用 Django 模板函数。 IMO 是更清洁的解决方案,改用本机 Python 方法:

@property
def short_description(self):
    return self.description if len(self.description) < 35 else (self.description[:33] + '..')

如何使用 python 内置切片语法

class DieTaskAdmin(admin.ModelAdmin):
    list_display =['severity','priority', 'subject', 'status','created','get_description']
    def get_description(self, obj):
        return obj.description[:10]
    get_description.short_description = "description"

admin.site.register(DieTask, DieTaskAdmin)