﻿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
9643	Custom managers on related objects generating incorrect SQL	Malcolm Tredinnick	Malcolm Tredinnick	"Using these models, we can generate incorrect SQL.

{{{
#!python
class Report(models.Model):
    name = models.CharField(max_length=100)

class TaskManager(models.Manager):
    def get_milestones(self):
        return super(TaskManager, self).get_query_set().filter(milestone=True)

class Task(models.Model):
    report = models.ForeignKey(Report)
    name = models.CharField(max_length=100)
    milestone = models.BooleanField(default=False)

    objects = TaskManager()

    def __unicode__(self):
        return u""%s"" % self.name
}}}

This gives the correct result:
{{{
#!python
>>> r = Report.objects.get(name=""r1"")
>>> r.task_set.filter(milestone=True)
}}}
This does not (it doesn't filter on `report_id`):
{{{
#!python
>>> r.task_set.get_milestones()
}}}

Whoopsie. :-("		closed	Database layer (models, ORM)	1.0		invalid			Accepted	0	0	0	0	0	0
