Skip to content

Commit

Permalink
Fixed #11709 — Pass inline fk_name attribute when grabbing foreign ke…
Browse files Browse the repository at this point in the history
…y to test for exclusion. Thanks yishaibeeri for the report.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@11630 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
brosner committed Oct 19, 2009
1 parent 69535b7 commit 5fc35c9
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
2 changes: 1 addition & 1 deletion django/contrib/admin/validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ def validate_inline(cls, parent, parent_model):

# exclude
if hasattr(cls, 'exclude') and cls.exclude:
fk = _get_foreign_key(parent_model, cls.model, can_fail=True)
fk = _get_foreign_key(parent_model, cls.model, fk_name=cls.fk_name, can_fail=True)
if fk and fk.name in cls.exclude:
raise ImproperlyConfigured("%s cannot exclude the field "
"'%s' - this is the foreign key to the parent model "
Expand Down
23 changes: 22 additions & 1 deletion tests/regressiontests/admin_validation/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@

from django.db import models


class Album(models.Model):
title = models.CharField(max_length=150)


class Song(models.Model):
title = models.CharField(max_length=150)
album = models.ForeignKey(Album)
Expand All @@ -17,11 +19,19 @@ class Meta:
def __unicode__(self):
return self.title


class Model11709(models.Model):
album1 = models.ForeignKey(Album, related_name="album1_set")
album2 = models.ForeignKey(Album, related_name="album2_set")
e = models.CharField(max_length=1)



__test__ = {'API_TESTS':"""
>>> from django import forms
>>> from django.contrib import admin
>>> from django.contrib.admin.validation import validate
>>> from django.contrib.admin.validation import validate, validate_inline
# Regression test for #8027: custom ModelForms with fields/fieldsets
Expand Down Expand Up @@ -58,4 +68,15 @@ def __unicode__(self):
...
ImproperlyConfigured: SongInline cannot exclude the field 'album' - this is the foreign key to the parent model Album.
# Regression test for #11709 - when testing for fk excluding (when exclude is
# given) make sure fk_name is honored or things blow up when there is more
# than one fk to the parent model.
>>> class Model11709Inline(admin.TabularInline):
... model = Model11709
... exclude = ("e",)
... fk_name = "album1"
>>> validate_inline(Model11709Inline, None, Album)
"""}

0 comments on commit 5fc35c9

Please sign in to comment.