2013-03-08 6 views
10

Sitem için Django admin kullanıyorum ve modellerden biri için list_display sayfasında bir alanın nasıl görüntülendiğine ilişkin bir özelleştirme yapmak istiyorum. Benim modellerinindjango admin'i liste sonuçlarında en fazla 100 karakter gösterecek şekilde ayarla

biri 300 karakter modeli Django yönetim listelenen

olabilen bir TextField, ben 100 karakter Yönetici liste ekranında görüntülenen metnin uzunluğunu sınırlamak istiyoruz vardır.

Bunu Django Admin sınıfında yapmanın bir yolu var mı?

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

Bu soru kesinlikle "gerçek" ve yeniden açılmalı. Sadece mevcut haliyle cevap vermek kolay olmakla kalmaz, aynı zamanda bir çözümün nasıl istendiği konusunda DRY'ye ve esnekliğe bağlı olarak çok çeşitli programlama ve geliştirme becerisi setlerinde farklı çözümlere izin verir. Bu, belirsizlik değil; bu sorunun sadece doğasıdır. – DylanYoung

cevap

26

Sen ModelAdmin sınıfta alanın değerinin kesik hâli döndüren bir özellik gösterebilir. Yerleşik şablon filtrelerden faydalanmak bunu kolaylaştırır.

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

Teşekkürler Brandon, bu cevabı ilk ben görmedim. – user1865341

+0

Cevabımı seçerse sinirlenme. Endişelenme, oy ver, benden daha fazlasına ihtiyacın var. Ve ben truncatechars hakkında noob varsa üzgünüm. Bu işlevi gerçekten bilmiyorum. Ben Django hakkında her şeyi bilmek için bir uzman değilim :) – catherine

+0

Listede – user1865341

İlgili konular