user1865341
user1865341

Reputation: 4479

Make django admin to display no more than 100 characters in list results

I am using Django admin for my site and I would like to make a customization on how a field is displayed on the list_display page for one of my models.

One of my models has a TextField that can be 300 characters

When the model is listed in the Django admin, I would like to limit the length of the text displayed in the Admin list display to 100 characters.

Is there a way to do this within the Django Admin class?

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)

Upvotes: 30

Views: 12067

Answers (2)

Sushang Agnihotri
Sushang Agnihotri

Reputation: 666

In Your Admin.py File :

class ApplicationAdmin(admin.ModelAdmin):
    list_display = ['titl1','title2'] # titl1 is behalf of title1
    
    def titl1(self, obj):
        return obj.title1[:100]

Upvotes: 3

Brandon Taylor
Brandon Taylor

Reputation: 34553

You can display a property that returns a truncated version of your field's value in your ModelAdmin class. Leveraging the built-in template filters makes this easy.

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']

Upvotes: 59

Related Questions