django admin截断list_display中的文本

时间:2016-10-27 03:27:15

标签: django list admin display

需要在admin list_display中删除文本

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

 from django.template.defaultfilters import truncatewords
 15
 16
 17
 18 def get_description(self, obj):
 19
 20      return truncatewords(obj.description, 10)
 21 get_description.short_description = "description"
 22
 23
 24
 25 class DieTaskAdmin(admin.ModelAdmin):
 26
 27
 28     list_display =['severity','priority', 'subject', 'status','created',get_description.short_description']
 29
 30 admin.site.register(DieTask, DieTaskAdmin)

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

3 个答案:

答案 0 :(得分:1)

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

from django.template.defaultfilters import truncatechars
...

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

并使用管理员中的short_descriptioin修剪文字。

答案 1 :(得分:1)

我个人会避免在模型方法/属性中使用Django模板函数。 IMO是更干净的解决方案,请改用本机Python方法:

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

答案 2 :(得分:0)

如何使用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)