Thanks, everyone. I sort of realised I'd need an annotation but wasn't too
clued up on its use. This is just what I needed.

Best wishes.

On Tue, Jul 17, 2012 at 2:05 AM, akaariai <akaar...@gmail.com> wrote:

> On 16 heinä, 14:38, Sithembewena Lloyd Dube <zebr...@gmail.com> wrote:
> > Hi everyone,
> >
> > I have a queryset of categories and would like to exclude categories with
> > no items associated. I am cycling through the queryset as follows,
> without
> > the desired result:
> >
> > for cat in categories:
> >                 if cat.item_set.count() == 0:
> >                     categories.exclude(pk=cat.pk)
>
> Querysets are always cloned on calling a method, so the right syntax
> is:
>     categories = categories.exclude(pk=cat.pk).
> For efficiency reasons you might want to collect all the pks into a
> list, and then after the loop do one:
>     categories = categories.exclude(pk__in=pk_list)
>
> The queryset cloning can be expensive if you do a lot of operations.
>
> Of course, the annotation way given downthread is likely to be the
> most effective way to do this.
>
>  - Anssi
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>


-- 
Regards,
Sithembewena Lloyd Dube

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to