diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2010-04-27 15:05:38 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2010-04-27 15:05:38 +0000 |
| commit | dd07c235454baea0c74fa373cc07187942f3aed0 (patch) | |
| tree | f0cc411a11bdca546d16b7c78921a9511e66410a /tests | |
| parent | b031fa2376f489406b44f0dabed18b5d318c2e83 (diff) | |
Fixed #12749 -- Corrected a problem with validation of inline primary keys. Thanks to Chris.Wesseling@cwi.nl for the report, and nessita for the test case.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13034 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/regressiontests/admin_inlines/models.py | 23 | ||||
| -rw-r--r-- | tests/regressiontests/admin_inlines/tests.py | 18 |
2 files changed, 40 insertions, 1 deletions
diff --git a/tests/regressiontests/admin_inlines/models.py b/tests/regressiontests/admin_inlines/models.py index bca582b9ab..5a12e0743c 100644 --- a/tests/regressiontests/admin_inlines/models.py +++ b/tests/regressiontests/admin_inlines/models.py @@ -102,6 +102,29 @@ admin.site.register(Holder2, HolderAdmin, inlines=[InnerInline2]) # only Inline media admin.site.register(Holder3, inlines=[InnerInline3]) +# Models for #12749 + +class Person(models.Model): + firstname = models.CharField(max_length=15) + +class OutfitItem(models.Model): + name = models.CharField(max_length=15) + +class Fashionista(models.Model): + person = models.OneToOneField(Person, primary_key=True) + weaknesses = models.ManyToManyField(OutfitItem, through='ShoppingWeakness', blank=True) + +class ShoppingWeakness(models.Model): + fashionista = models.ForeignKey(Fashionista) + item = models.ForeignKey(OutfitItem) + +class InlineWeakness(admin.TabularInline): + model = ShoppingWeakness + extra = 1 + +admin.site.register(Fashionista, inlines=[InlineWeakness]) + + __test__ = {'API_TESTS': """ # Regression test for #9362 diff --git a/tests/regressiontests/admin_inlines/tests.py b/tests/regressiontests/admin_inlines/tests.py index ffcbe1e4ba..c27873ceec 100644 --- a/tests/regressiontests/admin_inlines/tests.py +++ b/tests/regressiontests/admin_inlines/tests.py @@ -3,7 +3,7 @@ from django.test import TestCase # local test models from models import Holder, Inner, InnerInline from models import Holder2, Inner2, Holder3, Inner3 - +from models import Person, OutfitItem, Fashionista class TestInline(TestCase): fixtures = ['admin-views-users.xml'] @@ -48,6 +48,22 @@ class TestInline(TestCase): # The '+' is dropped from the autogenerated form prefix (Author_books+) self.assertContains(response, 'id="id_Author_books-TOTAL_FORMS"') + def test_inline_primary(self): + person = Person.objects.create(firstname='Imelda') + item = OutfitItem.objects.create(name='Shoes') + # Imelda likes shoes, but can't cary her own bags. + data = { + 'shoppingweakness_set-TOTAL_FORMS': 1, + 'shoppingweakness_set-INITIAL_FORMS': 0, + 'shoppingweakness_set-MAX_NUM_FORMS': 0, + '_save': u'Save', + 'person': person.id, + 'max_weight': 0, + 'shoppingweakness_set-0-item': item.id, + } + response = self.client.post('/test_admin/admin/admin_inlines/fashionista/add/', data) + self.assertEqual(response.status_code, 302) + self.assertEqual(len(Fashionista.objects.filter(person__firstname='Imelda')), 1) class TestInlineMedia(TestCase): fixtures = ['admin-views-users.xml'] |
