Сделайте django admin для отображения не более 100 символов в результатах списка.

Я использую администратор Django для своего сайта, и я хотел бы сделать настройку того, как поле отображается на странице list_display для одной из моих моделей.

Одна из моих моделей имеет TextField, которая может составлять 300 символов

Когда модель указана в администраторе Django, я хотел бы ограничить длину текста, отображаемого на дисплее списка Admin, до 100 символов.

Есть ли способ сделать это в классе Django Admin?

admin.py:

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

models.py:

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

Ответ 1

Вы можете отобразить свойство, которое возвращает усеченную версию вашего значения поля в вашем классе 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']