If I chain my .filter()s

Collection.objects.filter(collection_revisions__articles=article).filter(collection_revisions__char_fi="p")

collection_revisions is related_name, FK to Collection.
articles relname, m2m with collection_revision (with a through table).

I get ~20 results with this query::


SELECT "catalog_collection"."id",
        ...

       "catalog_collection"."collection_type_id"
FROM "catalog_collection"
INNER JOIN "catalog_collection_revision" ON ("catalog_collection"."id"
= "catalog_collection_revision"."collection_id")
INNER JOIN "catalog_collection_revision_item" ON
("catalog_collection_revision"."id" =
"catalog_collection_revision_item"."collection_revision_id")
INNER JOIN "catalog_collection_revision" T5 ON
("catalog_collection"."id" = T5."collection_id")
WHERE ("catalog_collection"."is_archived" = False
       AND "catalog_collection_revision_item"."article_id" = 3
       AND T5."revision_tag" = p)



When I put the two queries within the same call to filter, I thought
it would be the same.  But, there is not the 3rd INNER JOIN and it
only returns 1 object::

Collection.objects.filter(collection_revisions__articles=article,
filter(collection_revisions__revision_tag="p")

SELECT "catalog_collection"."id",
        ...

       "catalog_collection"."collection_type_id"
FROM "catalog_collection"
INNER JOIN "catalog_collection_revision" ON ("catalog_collection"."id"
= "catalog_collection_revision"."collection_id")
INNER JOIN "catalog_collection_revision_item" ON
("catalog_collection_revision"."id" =
"catalog_collection_revision_item"."collection_revision_id")
WHERE ("catalog_collection"."is_archived" = False
       AND "catalog_collection_revision_item"."article_id" = 3
       AND "catalog_collection_revision"."revision_tag" = p)


Is this the expected behavior?  Can someone explain what's going on?

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

Reply via email to