Форум сайта python.su
допустим у нас есть модели
class Lang(models.Model):
name = models.CharField(max_length=200)
class Text(models.Model):
name = models.CharField(max_length=200)
lang = models.ManyToManyField(Lang)
подскажите пожалуйста
как мне вычислять сколько Текстов(Text) в одном Языке(Lang)? И вывести их в упорядоченном виде по количеству текстов?
Нужно вывести статистику языков. База уже заполнена, не знаю как вывести.
Отредактировано slotmim (Май 29, 2012 23:52:21)
Офлайн
class Test(TemplateView): template_name = 'test/test.haml' def get_context_data(self, **kwargs): context=super(Test, self).get_context_data(**kwargs) l=Lang.objects.all() context['list']=[(i,i.text_set.all()) for i in l] return context
Русский [<Text: Анна Коренина>, <Text: Русско-татарский разговорник>, <Text: Русско-немецко-татарский справочник>, <Text: Сказки Пушкина>, <Text: Сказки Носова>]
Английский [<Text: Анна Коренина>]
Немецкий [<Text: Русско-немецко-татарский справочник>, <Text: Ницше в оригинале>]
Татарский [<Text: Русско-татарский разговорник>, <Text: Русско-немецко-татарский справочник>]
from django.db.models import Count class Test(TemplateView): template_name = 'test/test.haml' def get_context_data(self, **kwargs): context=super(Test, self).get_context_data(**kwargs) list=Lang.objects.annotate(text_count=Count('text')).order_by('-text_count') context['list']=list return context
{% for i in list %}
{{ i }}
{{ i.text_count }}
<br>
{% endfor %}
Русский 5
Немецкий 2
Татарский 2
Английский 1
Офлайн