Norman, unfortunately I think he's asking for the mutual intersection of the
users' courses, not the union.

  -- Scott

On Fri, Jul 18, 2008 at 11:49 AM, Norman Harman <[EMAIL PROTECTED]>
wrote:

>
> Deniz Dogan wrote:
> > Hey.
> >
> > I have a model Course and then I have django.contrib.auth.models.User.
> > Users and courses are related through M2M, so a user can register for
> > many courses and a course can register multiple users. Now, given a
> > potentially very long list of users, I want to retrieve all the
> > courses for which all of those users have registered. Currently I have
> > implemented it in this manner:
> >
> > courses = Course.objects.all()
> > for user in users:
> >   courses = courses.filter(users=user)
> > courses = courses.distinct()
> >
> > As you might expect, I get the "maximum 32 tables in a join" error
> > when having a very long list of users. How would I go about doing what
> > I want here?
>
> http://www.djangoproject.com/documentation/db-api/#in
>
> user_ids = [u.id for u in users]
> # or user_ids = User.objects.values_list("id", flat=true)
> courses = Course.objects.filter(users__id__in=user_ids)
>
> I've used 'in' with a many hundreds ids.  Have no idea how performant it
> is compared to other solutions.
>
>
> --
> Norman J. Harman Jr.
> Senior Web Specialist, Austin American-Statesman
> ___________________________________________________________________________
> You've got fun!  Check out Austin360.com for all the entertainment
> info you need to live it up in the big city!
>
> >
>


-- 
http://scott.andstuff.org/ | http://truthadorned.org/

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to