2015-01-31 3 views
1

У меня есть модель:порядок Джанго по количеству многих ко многим объекта

class Category(models.Model): 
    questions = models.ManyToManyField('Question', related_name="cat_question", blank=True) 
    cat_name = models.CharField(max_length=50) 
    cat_description = models.CharField(max_length=255) 

    def __unicode__(self): 
     return self.cat_name 

и на мой взгляд, у меня есть:

top_categories = Category.objects.all()[:7]. 

Я передаю его в качестве контекста в шаблоне. Я хочу сортировать верхние категории по количеству вопросов в нем, как если бы у категории была больше всего вопросов, тогда она должна быть в верхней части, а если у B больше всего вопросов, то B. Тогда второй самый и т. Д.

like top_categories = Category.objects.all().order_by(Count(question)

Любая помощь?

ответ

8

Annotate Category объектов с количеством вопросов, а затем порядка по этому номеру в порядке DESCEND:

top_categories = Category.objects.annotate(q_count=Count('questions')) \ 
           .order_by('-q_count')[:7] 
Смежные вопросы