﻿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
2608	multi-level foreignkey throws KeyError	Gopal Narayanan <gopastro@…>	Adrian Holovaty	"Example models:
{{{
class person(models.Model):
    pid = models.CharField(maxlength=20,
                           primary_key=True)
    name = models.CharField(maxlength=100)

class student(models.Model):
    student_pid = models.ForeignKey(person,
                                    db_column='student_pid',
                                    to_field='pid')

class student_option(models.Model):
    pid = models.ForeignKey(student,
                            to_field='student_pid')
    junk = models.IntegerField()
}}}

Note that student_option pid refers to student_pid which itself is a ForeignKey on student pointing to person.
Trying to generate SQL for these models throws KeyError: 'ForeignKey'

It appears that FKs are not allowed to point at a datatype that is itself a FK. It would be nice to allow multi-level foreign keys as there is a benefit in modeling legacy data with this kind of schema.

The patch attached simply enables the creation of SQL necessary for this to happen, by recursively diving down until we find the real underlying datatype.
"	defect	closed	contrib.admin		minor	fixed			Ready for checkin	0	0	0	0	0	0
