Hmmm ... so I just got back to trying this and I actually don't think
the annotate call as suggested does what I am looking for.  Say I want
to annotate queues with the number of closed tasks. This call:

Queue.objects.filter(task__status=Task.STATUS_CLOSED).annotate(num_tasks=Count('task'))

finds all queues that have tasks that are closed, but then it
annotates the queue with the total number of tasks that point to the
queue, not just the number of closed tasks that point to the queue.
It seems like I really need something like this (which doesn't exist):

Queue.objects.annotate(num_tasks=Count('task__status=Task.CLOSED_STATUS'))


At a higher level, I am trying to find a way to sort my queues based
on the number of tasks that point to the queue of a particular status.
IE, the user would be able to sort their queues based on number of
open tasks or number of closed tasks. Perhaps there is some other
approach that I am missing ...

Margie




On Mar 15, 2:43 am, Tom Evans <tevans...@googlemail.com> wrote:
> On Mon, Mar 14, 2011 at 8:57 PM,MargieRoginski
>
> <margierogin...@yahoo.com> wrote:
> > class Queue(models.Model):
> >  # fields here, not relevant for this discussion
>
> > class Task(models.Mode):
> >  queue = models.ForeignKey("Queue")
> >  status = models.IntegerField(choices=STATUS_CHOICES)
>
> > I am trying to create a Queue queryset that willannotateeach Queue
> > with the number of tasks whose queue field is pointing to that Queue
> > and status field has a certain value.
>
> > I don't thinkannotatewill work for me due to me needing to count up
> > only tasks whose status field has a certain value.  I think I might
> > need extra?  But I'm having touble making that work.
>
> No, this is precisely whatannotateis for.
>
> Queue.objects.filter(task__status=Task.SOME_CHOICE).annotate(num_tasks=Count('task'))
>
> Cheers
>
> Tom

-- 
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