To be fair, the query you describe is significantly more expensive than Marek's query.
On Fri, Nov 30, 2012 at 10:20 AM, Tom Evans <tevans...@googlemail.com>wrote: > On Fri, Nov 30, 2012 at 2:51 PM, Marek Brzóska <brzoskama...@gmail.com> > wrote: > > > > > > > > 2012/11/30 Tom Evans <tevans...@googlemail.com> > >> > >> On Fri, Nov 30, 2012 at 1:29 PM, Marek Brzóska <brzoskama...@gmail.com> > >> wrote: > >> > Has the matter been completely put away? > >> > > >> > I would like to bring it up again. > >> > > >> > I have Articles and Categories. An Article belongs to Categories: > >> > > >> > class Category(model): > >> > pass > >> > class Article(model): > >> > category = ManyToManyField(Category) > >> > status = CharField(max_length=10) > >> > > >> > Now I want all categories with articles that have status different > than > >> > "archived". > >> > > >> > I cannot do this with django's ORM! > >> > > >> > Category.objects.filter(~Q(article_status="archived")) > >> > >> What precisely is wrong with: > >> > >> Category.objects.exclude(article_status='archived') > > > > It excludes all categories that have at least one archived article. > > > > And I want categories that have at least one NOT archived article. > > > > Example: I have one category: politics. I have two articles in this > > category: "Vote Obama!" which archived and "U.S wars" which is not > archived. > > Category.objects.exclude(article_status='archived') > > will show no categories, while I want my only category to show, because > > there is one not archived article, "U.S. wars". > > That's a very different question: > > > Category.objects.exclude(article__status='archived').annotate(num_articles=Count('article')).filter(num_articles__gt=0) > > Still answerable via the ORM. > > Cheers > > Tom > > -- > You received this message because you are subscribed to the Google Groups > "Django developers" group. > To post to this group, send email to django-developers@googlegroups.com. > To unsubscribe from this group, send email to > django-developers+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-developers?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-developers@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.