26

我正在为我的站点使用 Django admin,并且我想自定义字段在我的一个模型的 list_display 页面上的显示方式。

我的一个模型有一个TextField可以是 300 个字符

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

有没有办法在 Django Admin 类中做到这一点?

管理员.py:

class ApplicationAdmin(admin.ModelAdmin):
    model = Application
    list_display = [ "title1", "title2"]

模型.py:

class Application(models.Model):
    title1 = models.TextField(max_length=300)
    title2 = models.TextField(max_length=300)
4

2 回答 2

55

您可以在 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']
于 2013-03-08T02:56:57.360 回答
1

在您的 Admin.py 文件中:

class ApplicationAdmin(admin.ModelAdmin):
    list_display = ['titl1','title2'] # titl1 is behalf of title1
    
    def titl1(self, obj):
        return obj.title1[:100]
于 2021-07-19T13:33:45.787 回答