From ced447ee9784d2a3bbd1115ff40ae837be766009 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Wed, 8 Oct 2008 10:11:02 +0000 Subject: [1.0.X] Fixed #9319 -- Fixed a crash when using the same model field in multiple unique_together constraints. Backport of r9208 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@9209 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- .../model_forms_regress/__init__.py | 0 .../regressiontests/model_forms_regress/models.py | 32 ++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 tests/regressiontests/model_forms_regress/__init__.py create mode 100644 tests/regressiontests/model_forms_regress/models.py (limited to 'tests') diff --git a/tests/regressiontests/model_forms_regress/__init__.py b/tests/regressiontests/model_forms_regress/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regressiontests/model_forms_regress/models.py b/tests/regressiontests/model_forms_regress/models.py new file mode 100644 index 0000000000..dedbed7179 --- /dev/null +++ b/tests/regressiontests/model_forms_regress/models.py @@ -0,0 +1,32 @@ +from django.db import models +from django import forms + +class Triple(models.Model): + left = models.IntegerField() + middle = models.IntegerField() + right = models.IntegerField() + + def __unicode__(self): + return u"%d, %d, %d" % (self.left, self.middle, self.right) + + class Meta: + unique_together = (('left', 'middle'), ('middle', 'right')) + +__test__ = {'API_TESTS': """ +When the same field is involved in multiple unique_together constraints, we +need to make sure we don't remove the data for it before doing all the +validation checking (not just failing after the first one). + +>>> _ = Triple.objects.create(left=1, middle=2, right=3) +>>> class TripleForm(forms.ModelForm): +... class Meta: +... model = Triple + +>>> form = TripleForm({'left': '1', 'middle': '2', 'right': '3'}) +>>> form.is_valid() +False +>>> form = TripleForm({'left': '1', 'middle': '3', 'right': '1'}) +>>> form.is_valid() +True +"""} + -- cgit v1.3