diff options
| author | Adam Chainz <me@adamj.eu> | 2016-11-20 18:21:59 +0000 |
|---|---|---|
| committer | Simon Charette <charettes@users.noreply.github.com> | 2016-11-20 13:21:59 -0500 |
| commit | cc1f6f26b68223bb5b332c774422173d7800bf80 (patch) | |
| tree | 5a39249b0a7bbda84f989a0b53bdbe960b9f6d87 | |
| parent | a269018e8695bb8cc65841c408c6024801130085 (diff) | |
Fixed #27514 -- Tested Model.__init__ excessive number of fields.
| -rw-r--r-- | django/db/models/base.py | 3 | ||||
| -rw-r--r-- | tests/model_regress/tests.py | 5 |
2 files changed, 6 insertions, 2 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py index 42b0a75728..219a1b1aa2 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -472,8 +472,7 @@ class Model(six.with_metaclass(ModelBase)): # overrides it. It should be one or the other; don't duplicate the work # The reason for the kwargs check is that standard iterator passes in by # args, and instantiation for iteration is 33% faster. - args_len = len(args) - if args_len > len(self._meta.concrete_fields): + if len(args) > len(self._meta.concrete_fields): # Daft, but matches old exception sans the err msg. raise IndexError("Number of args exceeds number of fields") diff --git a/tests/model_regress/tests.py b/tests/model_regress/tests.py index 3990143e2d..bd8e927be6 100644 --- a/tests/model_regress/tests.py +++ b/tests/model_regress/tests.py @@ -17,6 +17,11 @@ from .models import ( class ModelTests(TestCase): + def test_model_init_too_many_args(self): + msg = "Number of args exceeds number of fields" + with self.assertRaisesMessage(IndexError, msg): + Worker(1, 2, 3, 4) + # The bug is that the following queries would raise: # "TypeError: Related Field has invalid lookup: gte" def test_related_gte_lookup(self): |
