I have a model where each Blah can come from one or more Sources.
i.e. I have:
class Blah(models.Model):
...
sources = models.ManyToManyField(Source)
The query I want to perform is to find all the Blahs that come from
sources 1 or 2 but not sources 3 or 4.
My first attempt was:
Blah.objects.filter(sources__id__in=[1, 2]).exclude(sources__id__in=
[3, 4])
but that just returns all Blahs (the filter(sources__id__in=[1, 2])
is definitely wrong)
The SQL I want to run is something like:
SELECT blah_id
FROM myapp_blah_sources
WHERE source_id IN (1, 2)
EXCEPT
SELECT blah_id
FROM myapp_blah_sources
WHERE source_id in (3, 4);
and this seems to work. Note it's directly referencing the m2m relation.
What's the best way to express that SQL query in the database API?
Note that the lists [1, 2] and [3, 4] are actually coming from a form
and may be empty, in which case the WHERE clause could be eliminated
on that side of the EXCEPT.
Thanks
James
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---