On 5/5/2009 12:47 AM, bweiss wrote:
> Thanks Alex, that's really helpful and I'm certainly closer  now!
> However, after a fair bit of experimenting with that exclude() method,
> I still can't quite get it to do what I need.
> 
> I'm trying to get a list of all employees who do not have a
> qualification of a certain type (which I'llcall 'A1').
> 
> I can get a list of those who do have the qualification by using a
> lookup on the related "Qualification" model as follows:
> Employee.objects.filter(qualification__type__exact='A1')
> 
> Essentially, what I need is a list of all Employees, minus the names
> on that filtered list.
> 
> If I use the exclude()  method on the same lookup (so,
> Employee.objects.exclude(qualification__type__exact='A1')), the query
> returns those employees who have a qualification of any type other
> than A1.  It doesn't include the employees who have no qualifications
> at all, and it *does* include the ones who have A1 as well as other
> qualifications.
> 
> Can anyone suggest what I'm doing wrong?

{{{
excludes = Employee.objects.filter(
     qualification__type__exact='A1').values_list('pk', flat=True)
what_you_want = Employee.objects.exclude(pk__in=excludes)
}}}

or

{{{
all = Employee.objects.all()
excludes = Employee.objects.filter(qualification__type__exact='A1')
what_you_want = set(all) - set(excludes)
}}}

-- 
George

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