Loading AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,7 @@ answer newbie questions, and generally made Django that much better: Matt Deacalion Stevens <matt@dirtymonkey.co.uk> Matt Dennenbaum Matthew Flanagan <http://wadofstuff.blogspot.com> Matthew Schinckel <matt@schinckel.net> Matthew Somerville <matthew-django@dracos.co.uk> Matthew Tretter <m@tthewwithanm.com> Matthias Kestenholz <mk@406.ch> Loading django/db/backends/base/introspection.py +4 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,10 @@ class BaseDatabaseIntrospection(object): if not model._meta.managed: continue tables.add(model._meta.db_table) tables.update(f.m2m_db_table() for f in model._meta.local_many_to_many) tables.update( f.m2m_db_table() for f in model._meta.local_many_to_many if f.remote_field.through._meta.managed ) tables = list(tables) if only_existing: existing_tables = self.table_names(include_views=include_views) Loading tests/introspection/models.py +9 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ class Article(models.Model): body = models.TextField(default='') reporter = models.ForeignKey(Reporter, models.CASCADE) response_to = models.ForeignKey('self', models.SET_NULL, null=True) unmanaged_reporters = models.ManyToManyField(Reporter, through='ArticleReporter') def __str__(self): return self.headline Loading @@ -54,3 +55,11 @@ class Article(models.Model): index_together = [ ["headline", "pub_date"], ] class ArticleReporter(models.Model): article = models.ForeignKey(Article, models.CASCADE) reporter = models.ForeignKey(Reporter, models.CASCADE) class Meta: managed = False tests/introspection/tests.py +5 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ from django.db import connection from django.db.utils import DatabaseError from django.test import TransactionTestCase, mock, skipUnlessDBFeature from .models import Article, City, Reporter from .models import Article, ArticleReporter, City, Reporter class IntrospectionTests(TransactionTestCase): Loading Loading @@ -53,6 +53,10 @@ class IntrospectionTests(TransactionTestCase): self.assertNotIn('introspection_article_view', connection.introspection.table_names()) def test_unmanaged_through_model(self): tables = connection.introspection.django_table_names() self.assertNotIn(ArticleReporter._meta.db_table, tables) def test_installed_models(self): tables = [Article._meta.db_table, Reporter._meta.db_table] models = connection.introspection.installed_models(tables) Loading Loading
AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,7 @@ answer newbie questions, and generally made Django that much better: Matt Deacalion Stevens <matt@dirtymonkey.co.uk> Matt Dennenbaum Matthew Flanagan <http://wadofstuff.blogspot.com> Matthew Schinckel <matt@schinckel.net> Matthew Somerville <matthew-django@dracos.co.uk> Matthew Tretter <m@tthewwithanm.com> Matthias Kestenholz <mk@406.ch> Loading
django/db/backends/base/introspection.py +4 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,10 @@ class BaseDatabaseIntrospection(object): if not model._meta.managed: continue tables.add(model._meta.db_table) tables.update(f.m2m_db_table() for f in model._meta.local_many_to_many) tables.update( f.m2m_db_table() for f in model._meta.local_many_to_many if f.remote_field.through._meta.managed ) tables = list(tables) if only_existing: existing_tables = self.table_names(include_views=include_views) Loading
tests/introspection/models.py +9 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ class Article(models.Model): body = models.TextField(default='') reporter = models.ForeignKey(Reporter, models.CASCADE) response_to = models.ForeignKey('self', models.SET_NULL, null=True) unmanaged_reporters = models.ManyToManyField(Reporter, through='ArticleReporter') def __str__(self): return self.headline Loading @@ -54,3 +55,11 @@ class Article(models.Model): index_together = [ ["headline", "pub_date"], ] class ArticleReporter(models.Model): article = models.ForeignKey(Article, models.CASCADE) reporter = models.ForeignKey(Reporter, models.CASCADE) class Meta: managed = False
tests/introspection/tests.py +5 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ from django.db import connection from django.db.utils import DatabaseError from django.test import TransactionTestCase, mock, skipUnlessDBFeature from .models import Article, City, Reporter from .models import Article, ArticleReporter, City, Reporter class IntrospectionTests(TransactionTestCase): Loading Loading @@ -53,6 +53,10 @@ class IntrospectionTests(TransactionTestCase): self.assertNotIn('introspection_article_view', connection.introspection.table_names()) def test_unmanaged_through_model(self): tables = connection.introspection.django_table_names() self.assertNotIn(ArticleReporter._meta.db_table, tables) def test_installed_models(self): tables = [Article._meta.db_table, Reporter._meta.db_table] models = connection.introspection.installed_models(tables) Loading