summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/admin_inlines/models.py28
-rw-r--r--tests/regressiontests/admin_inlines/tests.py17
2 files changed, 45 insertions, 0 deletions
diff --git a/tests/regressiontests/admin_inlines/models.py b/tests/regressiontests/admin_inlines/models.py
index 4e5c4e3ae3..bb299f32b8 100644
--- a/tests/regressiontests/admin_inlines/models.py
+++ b/tests/regressiontests/admin_inlines/models.py
@@ -6,6 +6,7 @@ from django.db import models
from django.contrib import admin
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
+from django import forms
class Parent(models.Model):
name = models.CharField(max_length=50)
@@ -123,3 +124,30 @@ class InlineWeakness(admin.TabularInline):
extra = 1
admin.site.register(Fashionista, inlines=[InlineWeakness])
+
+# Models for #13510
+
+class TitleCollection(models.Model):
+ pass
+
+class Title(models.Model):
+ collection = models.ForeignKey(TitleCollection, blank=True, null=True)
+ title1 = models.CharField(max_length=100)
+ title2 = models.CharField(max_length=100)
+
+class TitleForm(forms.ModelForm):
+
+ def clean(self):
+ cleaned_data = self.cleaned_data
+ title1 = cleaned_data.get("title1")
+ title2 = cleaned_data.get("title2")
+ if title1 != title2:
+ raise forms.ValidationError("The two titles must be the same")
+ return cleaned_data
+
+class TitleInline(admin.TabularInline):
+ model = Title
+ form = TitleForm
+ extra = 1
+
+admin.site.register(TitleCollection, inlines=[TitleInline])
diff --git a/tests/regressiontests/admin_inlines/tests.py b/tests/regressiontests/admin_inlines/tests.py
index b10474d001..915c6fac8d 100644
--- a/tests/regressiontests/admin_inlines/tests.py
+++ b/tests/regressiontests/admin_inlines/tests.py
@@ -67,6 +67,23 @@ class TestInline(TestCase):
self.assertEqual(response.status_code, 302)
self.assertEqual(len(Fashionista.objects.filter(person__firstname='Imelda')), 1)
+ def test_tabular_non_field_errors(self):
+ """
+ Ensure that non_field_errors are displayed correctly, including the
+ right value for colspan. Refs #13510.
+ """
+ data = {
+ 'title_set-TOTAL_FORMS': 1,
+ 'title_set-INITIAL_FORMS': 0,
+ 'title_set-MAX_NUM_FORMS': 0,
+ '_save': u'Save',
+ 'title_set-0-title1': 'a title',
+ 'title_set-0-title2': 'a different title',
+ }
+ response = self.client.post('/test_admin/admin/admin_inlines/titlecollection/add/', data)
+ # Here colspan is "4": two fields (title1 and title2), one hidden field and the delete checkbock.
+ self.assertContains(response, '<tr><td colspan="4"><ul class="errorlist"><li>The two titles must be the same</li></ul></td></tr>')
+
class TestInlineMedia(TestCase):
fixtures = ['admin-views-users.xml']