Reputation: 4479
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
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
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