Refs #26796 -- Fixed ManyToManyField's limit_choices_to warning without a through model.

This commit is contained in:
Kevan Swanberg 2016-07-21 13:08:57 -04:00 committed by Tim Graham
parent d7a097265b
commit 17a0a6667c
2 changed files with 11 additions and 1 deletions

View File

@ -1228,7 +1228,8 @@ class ManyToManyField(RelatedField):
id='fields.W341', id='fields.W341',
) )
) )
if self.remote_field.limit_choices_to and self.remote_field.through: if (self.remote_field.limit_choices_to and self.remote_field.through and
not self.remote_field.through._meta.auto_created):
warnings.append( warnings.append(
checks.Warning( checks.Warning(
'limit_choices_to has no effect on ManyToManyField ' 'limit_choices_to has no effect on ManyToManyField '

View File

@ -176,6 +176,15 @@ class RelativeFieldTests(SimpleTestCase):
field = Model._meta.get_field('m2m') field = Model._meta.get_field('m2m')
self.assertEqual(field.check(from_model=Model), []) self.assertEqual(field.check(from_model=Model), [])
def test_many_to_many_with_limit_choices_auto_created_no_warning(self):
class Model(models.Model):
name = models.CharField(max_length=20)
class ModelM2M(models.Model):
m2m = models.ManyToManyField(Model, limit_choices_to={'name': 'test_name'})
self.assertEqual(ModelM2M.check(), [])
def test_many_to_many_with_useless_options(self): def test_many_to_many_with_useless_options(self):
class Model(models.Model): class Model(models.Model):
name = models.CharField(max_length=20) name = models.CharField(max_length=20)