When I combine two query sets I use the chain command. You might want to try it.
Here is my code snippet from itertools import chain # Get current station configuration records stationlist = StationConfig.objects.filter(StationId=result.StationId, StartDate__lte= result.ExecutionStartDate, EndDate__isnull=True) # Get old station configuration records that fall within date # range of test start date stationlist2 = StationConfig.objects.filter(StationId=result.StationId, StartDate__lte= result.ExecutionStartDate, EndDate__gte= result.ExecutionStartDate) stationlist_total = list(chain(stationlist, stationlist2)) On Wed, Jul 7, 2010 at 9:10 AM, Tom Evans <tevans...@googlemail.com> wrote: > Hi all > > I'm trying to combine two querysets, and having a difficult time > explaining why one bit of code works, and why similar code doesn't. > I'm probably doing something wrong.. > > This is a customer management system: > User objects are arranged into UserGroup objects, with a through table > called UserUserGroupPreferences, which denote things about the User's > membership of the UserGroup. > UserGroup objects belong to a single Organization, and each > Organization has exactly one UserGroup with is_catch_all_group=True. > > In simplified models, looks like this (User is django.contrib.auth.User) > > class UserUserGroupPreferences(models.Model): > usergroup = models.ForeignKey('UserGroup') > user = models.ForeignKey(User) > is_account_manager = models.BooleanField(default=False) > > class UserGroup(models.Model): > organization = models.ForeignKey('Organization') > users = models.ManyToManyField(User, through='UserUserGroupPreferences') > is_catch_all_group = models.BooleanField(default=False) > > I wish to find the groups for which a particular user is an account > manager, or the catch all group in the same organization as a group of > which the user is an account manager. I've come up with this bit of > code, which works. However, I can't understand why the last line must > be in that order. > > filt1 = Q(userusergrouppreferences__is_account_manager=True)\ > & Q(userusergrouppreferences__user=request.user) > filt2 = Q(is_catch_all_group=True)\ > & > Q(organization__usergroup__userusergrouppreferences__user=request.user)\ > & > Q(organization__usergroup__userusergrouppreferences__is_account_manager=True) > qs1 = UserGroup.objects.filter(filt1).distinct() > qs2 = UserGroup.objects.filter(filt2).distinct() > # For some reason, this is not the same as qs1 | qs2 - answers on a > postcard please. > managed_groups = qs2 | qs1 > > Any hints? > > 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-us...@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@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.