From 1e2e1be02bdf0fe4add0d0279dbca1d74ae28ad7 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Wed, 16 Feb 2022 21:09:24 +0100 Subject: Fixed #33515 -- Prevented recreation of migration for ManyToManyField to lowercased swappable setting. Thanks Chris Lee for the report. Regression in 43289707809c814a70f0db38ca4f82f35f43dbfd. Refs #23916. --- django/db/models/fields/related.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'django') diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 18c6c4e607..ca4f4368b6 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -1728,11 +1728,15 @@ class ManyToManyField(RelatedField): kwargs["db_table"] = self.db_table if self.remote_field.db_constraint is not True: kwargs["db_constraint"] = self.remote_field.db_constraint - # Rel needs more work. + # Lowercase model names as they should be treated as case-insensitive. if isinstance(self.remote_field.model, str): - kwargs["to"] = self.remote_field.model + if "." in self.remote_field.model: + app_label, model_name = self.remote_field.model.split(".") + kwargs["to"] = "%s.%s" % (app_label, model_name.lower()) + else: + kwargs["to"] = self.remote_field.model.lower() else: - kwargs["to"] = self.remote_field.model._meta.label + kwargs["to"] = self.remote_field.model._meta.label_lower if getattr(self.remote_field, "through", None) is not None: if isinstance(self.remote_field.through, str): kwargs["through"] = self.remote_field.through -- cgit v1.3