﻿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
7378	Reverse relationship ignores to_field (in another setting)	mturtle@…	Jacob	"This is related to bug #4510. I am using the latest version from SVN (r7574), and a similar error is happening. Basically, the reverse relationship ignores the to_field when I use it directly as a property (although the example in #4510 using it in a filter works fine).

If I have these models:

{{{
class Place(models.Model):
    unique_but_not_primary_field = models.IntegerField(unique=True)

class Franchise(models.Model):
    place = models.ForeignKey(Place, to_field='unique_but_not_primary_field')
}}}

And I enter this code:

{{{
>>> new_york = Place(unique_but_not_primary_field=1000)
>>> new_york.save()
>>> mcdonalds = Franchise()
>>> mcdonalds.place = new_york
>>> mcdonalds.save()
>>> print new_york.franchise_set.all()
[]
>>> print django.db.connection.queries[-1]['sql']
SELECT `cms_franchise`.`id`, `cms_franchise`.`place_id` FROM `cms_franchise` INNER JOIN `cms_place` ON (`cms_franchise`.`place_id` = `cms_place`.`unique_but_not_primary_field`) WHERE `cms_place`.`id` = 1000 
}}}

It is still doing the join on the primary key, not the to_field.

As far as I can tell, the problem is in django/db/models/fields/related.py on line 322:

{{{
manager.core_filters = {'%s__pk' % rel_field.name: getattr(instance, rel_field.rel.get_related_field().attname)}
}}}

I changed this line to the following, and it works perfectly for me:

{{{
manager.core_filters = {'%s__%s' % (rel_field.name, rel_field.rel.get_related_field().attname): getattr(instance, rel_field.rel.get_related_field().attname)}
}}}

"		closed	Database layer (models, ORM)	dev		fixed	qsrf-cleanup		Unreviewed	0	0	0	0	0	0
