﻿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
2361	QuerySet.filter(m2mfield__isnull=False) may return duplicates	daniel.tietze@…		"My Django installation is SVN Revision: 3238

Filtering models by a ManyToMany field does not appear to work.
See Google groups thread http://groups.google.com/group/django-users/browse_thread/thread/d0d799a45cb92d35

I have two classes -- Blog and Submission:


{{{
class Blog( models.Model ):
    entries = models.ManyToManyField( Submission )

class Submission( models.Model ):
  [... whatever ]
}}}


I want to fetch a list of all Blog instances which have at least one
Submission , i.e. entries.count() > 0. 

The suggested 
{{{
Blog.objects.filter(entries__isnull = False)
}}}
 (suggested by Malcolm Tredinnick) returns:

{{{

psycopg.ProgrammingError: FEHLER:  Spalte
m2m_models_blog__entries.entries existiert nicht

SELECT
""models_blog"".""id"",""models_blog"".""title"",""models_blog"".""description"",""models_blog"".""region_id"",""models_blog"".""regionname"",""models_blog"".""date_submitted"",""models_blog"".""author_id"",""models_blog"".""visible""
FROM ""models_blog"" LEFT OUTER JOIN ""models_blog_entries"" AS
""m2m_models_blog__entries"" ON ""models_blog"".""id"" =
""m2m_models_blog__entries"".""blog_id"" WHERE
(""m2m_models_blog__entries"".""entries"" IS NOT NULL) 

}}}

m2m_models_blog__entries is an alias for models_blog_entries -- I
*have* this table, but it has no column ""entries"". This is what it looks like:


{{{
# \d models_blog_entries

Tabelle »public.models_blog_entries«
    Spalte     |   Typ   |                              Attribute
---------------+---------+---------------------------------------------------------------------
 id            | integer | not null default
nextval('public.models_blog_entries_id_seq'::text)
 blog_id       | integer | not null
 submission_id | integer | not null
Indexe:
    »models_blog_entries_pkey« PRIMARY KEY, btree (id)
    »models_blog_entries_blog_id_key« UNIQUE, btree (blog_id,
submission_id)
Fremdschlüssel-Constraints:
    »models_blog_entries_blog_id_fkey« FOREIGN KEY (blog_id)
REFERENCES models_blog(id)
    »models_blog_entries_submission_id_fkey« FOREIGN KEY
(submission_id) REFERENCES models_submission(id)

}}}

Also, if I do this:


{{{
Blog.objects.filter(entries__blog__id__isnull = False)
}}}


I get a list of Blogs which have entries, however I have duplicates in
the list, one for each Submission which is in a M2M relationship (i.e.
each Blog is shown n times if it has n entries). "	Bug	new	Database layer (models, ORM)	dev	normal			Fabio Sangiovanni	Accepted	0	0	0	0	0	0
