diff options
| author | Joseph Kocherhans <joseph@jkocherhans.com> | 2010-01-14 17:04:53 +0000 |
|---|---|---|
| committer | Joseph Kocherhans <joseph@jkocherhans.com> | 2010-01-14 17:04:53 +0000 |
| commit | a2a5602b1937e94b579957c9c2823da48eb69ed9 (patch) | |
| tree | f5f1237680cd9442d3d13304e529200eb5c60279 | |
| parent | 2b2db12032e47229a9d9af28b05a07648f3fef93 (diff) | |
Fixed #12560. Changed validate_unique to stop checking null primary key values. Thanks, Honza Král.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12227 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | AUTHORS | 2 | ||||
| -rw-r--r-- | django/db/models/base.py | 2 | ||||
| -rw-r--r-- | tests/modeltests/validation/test_unique.py | 22 |
3 files changed, 17 insertions, 9 deletions
@@ -256,7 +256,7 @@ answer newbie questions, and generally made Django that much better: Gasper Koren Martin Kosír <martin@martinkosir.net> Arthur Koziel <http://arthurkoziel.com> - Honza Kral <honza.kral@gmail.com> + Honza Král <honza.kral@gmail.com> Meir Kriheli <http://mksoft.co.il/> Bruce Kroeze <http://coderseye.com/> krzysiek.pawlik@silvermedia.pl diff --git a/django/db/models/base.py b/django/db/models/base.py index 6f90091871..822116054c 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -715,7 +715,7 @@ class Model(object): for field_name in unique_check: f = self._meta.get_field(field_name) lookup_value = getattr(self, f.attname) - if f.null and lookup_value is None: + if lookup_value is None: # no value, skip the lookup continue if f.primary_key and not getattr(self, '_adding', False): diff --git a/tests/modeltests/validation/test_unique.py b/tests/modeltests/validation/test_unique.py index 0130208bba..2d67a0a296 100644 --- a/tests/modeltests/validation/test_unique.py +++ b/tests/modeltests/validation/test_unique.py @@ -43,18 +43,26 @@ class PerformUniqueChecksTest(unittest.TestCase): settings.DEBUG = self._old_debug super(PerformUniqueChecksTest, self).tearDown() - def test_primary_key_unique_check_performed_when_adding(self): - """Regression test for #12132""" - l = len(connection.queries) + def test_primary_key_unique_check_not_performed_when_adding_and_pk_not_specified(self): + # Regression test for #12560 + query_count = len(connection.queries) mtv = ModelToValidate(number=10, name='Some Name') setattr(mtv, '_adding', True) mtv.full_clean() - self.assertEqual(l+1, len(connection.queries)) + self.assertEqual(query_count, len(connection.queries)) + + def test_primary_key_unique_check_performed_when_adding_and_pk_specified(self): + # Regression test for #12560 + query_count = len(connection.queries) + mtv = ModelToValidate(number=10, name='Some Name', id=123) + setattr(mtv, '_adding', True) + mtv.full_clean() + self.assertEqual(query_count + 1, len(connection.queries)) def test_primary_key_unique_check_not_performed_when_not_adding(self): - """Regression test for #12132""" - l = len(connection.queries) + # Regression test for #12132 + query_count= len(connection.queries) mtv = ModelToValidate(number=10, name='Some Name') mtv.full_clean() - self.assertEqual(l, len(connection.queries)) + self.assertEqual(query_count, len(connection.queries)) |
