﻿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
20062	Filtering ManyToManyField in a class with OneToOneField as a primary key generates a wrong query	alexandre@…	nobody	"When I have the following models:

{{{
class Produto(models.Model):
    nome = models.CharField(max_length=200)
	
class Variacao(models.Model):
    nome = models.CharField(max_length=200)
	
class ItemVariacao(models.Model):
    variacao = models.ForeignKey(Variacao)
    nome = models.CharField(max_length=200)	

class ProdutoVariacao(models.Model):
    produto = models.OneToOneField(Produto, primary_key=True)
    variacoes = models.ManyToManyField(ItemVariacao)	
}}}

and execute this:

{{{
Variacao.objects.filter(itemvariacao__produtovariacao__produto__in=[1,2]).query
}}}

django generates it:

{{{
SELECT ""produto_variacao"".""id"", ""produto_variacao"".""nome"" 
FROM ""produto_variacao"" 
INNER JOIN ""produto_itemvariacao"" ON (""produto_variacao"".""id"" = ""produto_itemvariacao"".""variacao_id"") 
INNER JOIN ""produto_produtovariacao_variacoes"" ON (""produto_itemvariacao"".""id"" = ""produto_produtovariacao_variacoes"".""itemvariacao_id"") 
WHERE ""produto_produtovariacao_variacoes"".""produtovariacao_id"" IN (1, 2) 
ORDER BY ""produto_variacao"".""nome"" ASC
}}}

instead of:

{{{
SELECT ""produto_variacao"".""id"", ""produto_variacao"".""nome"" 
FROM ""produto_variacao"" 
INNER JOIN ""produto_itemvariacao"" ON (""produto_variacao"".""id"" = ""produto_itemvariacao"".""variacao_id"") 
INNER JOIN ""produto_produtovariacao_variacoes"" ON (""produto_itemvariacao"".""id"" = ""produto_produtovariacao_variacoes"".""itemvariacao_id"") 
INNER JOIN ""produto_produtovariacao"" ON (""produto_produtovariacao_variacoes"".""produtovariacao_id"" = ""produto_produtovariacao"".""id"") 
WHERE ""produto_produtovariacao"".""produto_id"" IN (1, 2) ORDER BY ""produto_variacao"".""nome"" ASC
}}}

I removed primary_key attribute from OneToOneField to test using id as primary key and django generated query properly as in second example."	Bug	closed	Database layer (models, ORM)	1.4	Normal	invalid			Unreviewed	0	0	0	0	0	0
