multi-level foreignkey throws KeyError
|Reported by:||Owned by:||Adrian Holovaty|
|Cc:||Triage Stage:||Ready for checkin|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
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()
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.