I just came back to write the same thing; after finding that the Django unit tests specifically check for the behavior I thought was a bug, I reread ???https://docs.djangoproject.com/en/dev/topics/db/queries/#spanning-multi-valued-relationships in more detail and finally understood the design decision.