Monday, November 1, 2010

Query help

Hi people,

Given this:

class Category(models.Model):
name = models.CharField()
parent = models.ForeignKey('self', blank=True, null=True)
tree_path = models.CharField() # /<root_id>/.../<parent_id>/<id>/

class Item(models.Model):
name = models.CharField()
categories = models.ManyToManyField(Category)

I need a Category queryset, with each category annotated with a count of items which have categories whose tree_path starts with the tree_path of the current category, and with categories for which this count is 0 filtered out.

In case that wasn't clear - I need an efficient way to do this:

for category in Category.objects.all():
category.num_items = Item.objects.filter(categories__tree_path__startswith=category.tree_path).count()
if category.num_items > 0:
yield category

Suggestions?

TIA, Itai

--
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+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment