Django

Code

Changeset 8708

Show
Ignore:
Timestamp:
08/29/08 12:41:40 (3 months ago)
Author:
brosner
Message:

Fixed #7918 -- Allow the foreign key in an inline to be any where in the parent chain. Thanks sil for the report.

Files:

Legend:

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

    r8618 r8708  
    386386            if not isinstance(fk, ForeignKey) or \ 
    387387                    (fk.rel.to != parent_model and 
    388                      fk.rel.to not in parent_model._meta.parents.keys()): 
     388                     fk.rel.to not in parent_model._meta.get_parent_list()): 
    389389                raise Exception("fk_name '%s' is not a ForeignKey to %s" % (fk_name, parent_model)) 
    390390        elif len(fks_to_parent) == 0: 
     
    396396            if isinstance(f, ForeignKey) 
    397397            and (f.rel.to == parent_model 
    398                 or f.rel.to in parent_model._meta.parents.keys()) 
     398                or f.rel.to in parent_model._meta.get_parent_list()) 
    399399        ] 
    400400        if len(fks_to_parent) == 1: 
  • django/trunk/tests/modeltests/model_formsets/models.py

    r8563 r8708  
    3636    my_pk = models.CharField(max_length=10, primary_key=True) 
    3737    some_field = models.CharField(max_length=100) 
     38 
     39 
     40# models for inheritance tests. 
     41 
     42class Place(models.Model): 
     43    name = models.CharField(max_length=50) 
     44    city = models.CharField(max_length=50) 
     45     
     46    def __unicode__(self): 
     47        return self.name 
     48 
     49class Owner(models.Model): 
     50    name = models.CharField(max_length=100) 
     51    place = models.ForeignKey(Place) 
     52 
     53class Restaurant(Place): 
     54    serves_pizza = models.BooleanField() 
     55     
     56    def __unicode__(self): 
     57        return self.name 
     58 
     59class MexicanRestaurant(Restaurant): 
     60    serves_tacos = models.BooleanField() 
    3861 
    3962 
     
    397420<p><label for="id_form-0-some_field">Some field:</label> <input id="id_form-0-some_field" type="text" name="form-0-some_field" maxlength="100" /></p> 
    398421 
     422# Foreign keys in parents ######################################## 
     423 
     424>>> from django.forms.models import _get_foreign_key 
     425 
     426>>> type(_get_foreign_key(Restaurant, Owner)) 
     427<class 'django.db.models.fields.related.ForeignKey'> 
     428>>> type(_get_foreign_key(MexicanRestaurant, Owner)) 
     429<class 'django.db.models.fields.related.ForeignKey'> 
     430 
    399431"""}