Fixed #27514 -- Tested Model.__init__ excessive number of fields.

This commit is contained in:
Adam Chainz 2016-11-20 18:21:59 +00:00 committed by Simon Charette
parent a269018e86
commit cc1f6f26b6
2 changed files with 6 additions and 2 deletions

View File

@ -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")

View File

@ -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):