diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py index 9eb9729ea7..353eb39488 100644 --- a/django/db/backends/__init__.py +++ b/django/db/backends/__init__.py @@ -404,7 +404,7 @@ class BaseDatabaseIntrospection(object): tables.add(model._meta.db_table) tables.update([f.m2m_db_table() for f in model._meta.local_many_to_many]) if only_existing: - tables = [t for t in tables if t in self.table_names()] + tables = [t for t in tables if self.table_name_converter(t) in self.table_names()] return tables def installed_models(self, tables): diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 1763bf2523..c87b823a69 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -1,4 +1,5 @@ from django.db import connection, transaction +from django.db.backends import util from django.db.models import signals, get_model from django.db.models.fields import AutoField, Field, IntegerField, PositiveIntegerField, PositiveSmallIntegerField, FieldDoesNotExist from django.db.models.related import RelatedObject @@ -771,7 +772,8 @@ class ManyToManyField(RelatedField, Field): elif self.db_table: return self.db_table else: - return '%s_%s' % (opts.db_table, self.name) + return util.truncate_name('%s_%s' % (opts.db_table, self.name), + connection.ops.max_name_length()) def _get_m2m_column_name(self, related): "Function that can be curried to provide the source column name for the m2m table"