http://docs.djangoproject.com/en/1.2/topics/db/queries/#spanning-multi-valued-relationships

On Jul 10, 12:33 am, Skylar Saveland <skylar.savel...@gmail.com>
wrote:
> If I chain my .filter()s
>
> Collection.objects.filter(collection_revisions__articles=article).filter(co 
> llection_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