summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2010-04-27 15:05:38 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2010-04-27 15:05:38 +0000
commitdd07c235454baea0c74fa373cc07187942f3aed0 (patch)
treef0cc411a11bdca546d16b7c78921a9511e66410a /tests
parentb031fa2376f489406b44f0dabed18b5d318c2e83 (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.py23
-rw-r--r--tests/regressiontests/admin_inlines/tests.py18
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']