From cc1f6f26b68223bb5b332c774422173d7800bf80 Mon Sep 17 00:00:00 2001 From: Adam Chainz Date: Sun, 20 Nov 2016 18:21:59 +0000 Subject: [PATCH] Fixed #27514 -- Tested Model.__init__ excessive number of fields. --- django/db/models/base.py | 3 +-- 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):