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.