id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 19837,Regression in QuerySet.exclude and many to many,Tim Graham,nobody,"The refactorings in #10790 appears to have cause an issue with QuerySet.exclude and many to many fields. Attached is a regression test which demonstrates the problem. The test passes using checkout f811649710fb51e48217e9a78991735977decfd8, but fails against the next changeset (the ticket I mentioned above) through master. In the SQL query from the test, you can see that the ""WHERE NOT"" clause compares program IDs to a subquery that retrieves identifier IDs: {{{queries_program"".""id"" IN (SELECT U1.""identifier_id}}} {{{ SELECT ""queries_identifier"".""id"", ""queries_identifier"".""name"" FROM ""queries_identifier"" LEFT OUTER JOIN ""queries_program"" ON ( ""queries_identifier"".""id"" = ""queries_program"".""identifier_id"" ) WHERE NOT (( ""queries_program"".""id"" IN ( SELECT U1.""identifier_id"" FROM ""queries_program"" U1 INNER JOIN ""queries_channel_programs"" U2 ON (U1.""id"" = U2.""program_id"") WHERE (U2.""channel_id"" = 1 AND U1.""identifier_id"" IS NOT NULL) ) AND NOT (""queries_program"".""identifier_id"" IS NULL) AND ""queries_program"".""id"" IS NOT NULL AND ""queries_program"".""id"" IS NOT NULL )) ORDER BY ""queries_identifier"".""name"" ASC }}}",Bug,closed,"Database layer (models, ORM)",dev,Release blocker,fixed,,,Unreviewed,0,0,0,0,0,0