mirror of https://github.com/django/django.git
Fixed #26304 -- Ignored unmanaged through model in table introspection.
This commit is contained in:
parent
5155c2b458
commit
60633ef3de
1
AUTHORS
1
AUTHORS
|
@ -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>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
@ -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…
Reference in New Issue