Opened 13 years ago
Last modified 13 years ago
#17665 closed Bug
Inconsitent behaviour of filter() with multi-valued relations. — at Version 1
Reported by: | Łukasz Rekucki | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 1.3 |
Severity: | Normal | Keywords: | |
Cc: | krzysiumed@… | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
This is probably a duplicate as I recall seeing a similar issue, but I couldn't find it, so here it goes:
We have 2 models (lets say, Company and Person), connected thru a M2M table (Membership) with additional attribute "active".
The following queries work as documented:
base = Company.objects.all() # 1) select all companies in which person 1 is active base.filter(membership_set__active=True, membership_set__person=1) # 2) select all companies in which some membership is active or person '1' is a member base.filter(membership_set__active=True).filter(membership_set__person=1)
But if you apply the filter()
directly to the manager:
Company.objects.filter(membership_set__active=True, membership_set__person=1)
The behaviour is the same as query 2), while it should work like 1).
Note:
See TracTickets
for help on using tickets.