使django admin在列表结果中显示不超过100个字符

use*_*341 19 python django

我正在为我的网站使用Django管理员,我想对我的一个模型的list_display页面上的字段显示进行自定义.

我的一个型号有TextField300个字符

当模型在Django管理员中列出时,我想将管理列表显示中显示的文本长度限制为100个字符.

有没有办法在Django Admin类中执行此操作?

admin.py:

class ApplicationAdmin(admin.ModelAdmin):
    model = Application
    list_display = [ "title1", "title2"]
Run Code Online (Sandbox Code Playgroud)

models.py:

class Application(models.Model):
    title1 = models.TextField(max_length=300)
    title2 = models.TextField(max_length=300)
Run Code Online (Sandbox Code Playgroud)

Bra*_*don 40

您可以在ModelAdmin类中显示一个返回字段值截断版本的属性.利用内置模板过滤器可以轻松实现这一目标.

from django.template.defaultfilters import truncatechars  # or truncatewords

class Foo(models.Model):
    description = models.TextField()

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

class FooAdmin(admin.ModelAdmin):
    list_display = ['short_description']
Run Code Online (Sandbox Code Playgroud)

  • 我想提一下,如果有人不想在他的模型类中添加一个与视图相关的方法,他也可以在admin类中添加一个方法.这个callable将作为参数传递给模型对象.我认为这种方式比上述解决方案更好.想象一下,您需要在不同的管理员中将字符串截断为不同的大小,然后在模型类中使用short_xxx,veryshort_xxx等方法. (3认同)