Найти - Пользователи
Полная версия: many2many выборка
Начало » Django » many2many выборка
1
slotmim
допустим у нас есть модели
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)? И вывести их в упорядоченном виде по количеству текстов?
Нужно вывести статистику языков. База уже заполнена, не знаю как вывести.
FishHook
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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB