2015-09-07 11 views
8

Chciałbym wyświetlić liczbę powiązanych obiektów we właściwości list_display django. na przykład mamy pole kategorii i chcemy pokazać, jak wiele blogi są umieszczane w tej kategoriiDjango: pokaż liczbę powiązanych obiektów w admin wyślij listę

próbowałem to tak daleko:

admin.py:

from .models import Category 

class CategoryAdmin(admin.ModelAdmin): 
    def category_post_count(self, obj): 
     return obj.post_set.count 
category_post_count.short_description = "Posts Count" 

list_display = ['category', 'category_post_count'] 

modeli. py:

class Category(models.Model): 
    category = models.CharField(max_length=25) 

class Post(models.Model): 
    category = models.ForeignKey(Category, null=True, blank=False) 

Odpowiedz

7

.count jest funkcją tak trzeba nazwać to przez dodanie nawiasów () na koniec:

def category_post_count(self, obj): 
    return obj.post_set.count() 
+0

działa doskonale dzięki – samix73

+1

Hej, mam oddzielne pytanie dotyczące tego. Próbuję się nauczyć Django. Czy możesz wskazać mi odpowiednią dokumentację, która wyjaśnia, dlaczego to działa. (tj. ta metoda pokazywania całkowitej liczby rekordów obiektów ForeignKey w admin. Interesuje mnie wyjaśnienie/dokumentacja na temat funkcji category_post_count). Dzięki – Deep

+0

@Wszyscy możesz to sprawdzić: https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display – ozgur