Opened 12 years ago

Last modified 12 years ago

#17665 closed Bug

Inconsitent behaviour of filter() with multi-valued relations. — at Initial Version

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

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

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top