Django

Code

Changeset 8165

Show
Ignore:
Timestamp:
07/31/08 19:27:40 (4 months ago)
Author:
russellm
Message:

Modified inline handling to allow for an inline formset to be displayed when the foreign key exists on a parent class.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/forms/models.py

    r8060 r8165  
    442442        if len(fks_to_parent) == 1: 
    443443            fk = fks_to_parent[0] 
    444             if not isinstance(fk, ForeignKey) or fk.rel.to != parent_model: 
     444            if not isinstance(fk, ForeignKey) or \ 
     445                    (fk.rel.to != parent_model and  
     446                     fk.rel.to not in parent_model._meta.parents.keys()): 
    445447                raise Exception("fk_name '%s' is not a ForeignKey to %s" % (fk_name, parent_model)) 
    446448        elif len(fks_to_parent) == 0: 
     
    448450    else: 
    449451        # Try to discover what the ForeignKey from model to parent_model is 
    450         fks_to_parent = [f for f in opts.fields if isinstance(f, ForeignKey) and f.rel.to == parent_model] 
     452        fks_to_parent = [ 
     453            f for f in opts.fields  
     454            if isinstance(f, ForeignKey)  
     455            and (f.rel.to == parent_model  
     456                or f.rel.to in parent_model._meta.parents.keys()) 
     457        ] 
    451458        if len(fks_to_parent) == 1: 
    452459            fk = fks_to_parent[0]