Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Modified inline handling to allow for an inline formset to be display…

…ed when the foreign key exists on a parent class.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@8165 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 83f0d54d41a23ae856376942e1ece8fd8d6efa34 1 parent b0d1612
@freakboy3742 freakboy3742 authored
Showing with 9 additions and 2 deletions.
  1. +9 −2 django/forms/models.py
View
11 django/forms/models.py
@@ -441,13 +441,20 @@ def _get_foreign_key(parent_model, model, fk_name=None):
fks_to_parent = [f for f in opts.fields if f.name == fk_name]
if len(fks_to_parent) == 1:
fk = fks_to_parent[0]
- if not isinstance(fk, ForeignKey) or fk.rel.to != parent_model:
+ if not isinstance(fk, ForeignKey) or \
+ (fk.rel.to != parent_model and
+ fk.rel.to not in parent_model._meta.parents.keys()):
raise Exception("fk_name '%s' is not a ForeignKey to %s" % (fk_name, parent_model))
elif len(fks_to_parent) == 0:
raise Exception("%s has no field named '%s'" % (model, fk_name))
else:
# Try to discover what the ForeignKey from model to parent_model is
- fks_to_parent = [f for f in opts.fields if isinstance(f, ForeignKey) and f.rel.to == parent_model]
+ fks_to_parent = [
+ f for f in opts.fields
+ if isinstance(f, ForeignKey)
+ and (f.rel.to == parent_model
+ or f.rel.to in parent_model._meta.parents.keys())
+ ]
if len(fks_to_parent) == 1:
fk = fks_to_parent[0]
elif len(fks_to_parent) == 0:
Please sign in to comment.
Something went wrong with that request. Please try again.