понедельник, 17 января 2011 г.

Django: как вынуть только те объекты, с которыми что-то связано

И не просто что-то, а если нужно вынуть только те объекты, у которых есть связи с конкретным набором объектов? Например в общем каталоге, нужно видеть все материалы из которых сделаны товары, а в разделе бусы — только то из чего бывают бусы.
materials=Materials.objects.annotate(goods_num=Count('goods')).filter(goods_num__gt=0).order_by('-goods_num', 'id')

exclude_list=[mat.id for mat in materials if mat.goods_set.filter(**kwargs).count() == 0]

materials=Materials.objects.annotate(goods_num=Count('goods')).filter(goods_num__gt=0).exclude(id__in=exclude_list).order_by('-goods_num', 'id')


* This source code was highlighted with Source Code Highlighter.

Комментариев нет:

Отправить комментарий