mirror of https://github.com/django/django.git
Fixed #27217 -- Fixed crash in CreateModel optimization with models that use mixins.
Thanks Simon Charette for review.
This commit is contained in:
parent
9e07a9b5fe
commit
a44fc008c4
|
@ -109,7 +109,10 @@ class CreateModel(ModelOperation):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# Check we didn't inherit from the model
|
# Check we didn't inherit from the model
|
||||||
models_to_check = [base for base in self.bases if base is not models.Model]
|
models_to_check = [
|
||||||
|
base for base in self.bases
|
||||||
|
if base is not models.Model and isinstance(base, (models.base.ModelBase, six.string_types))
|
||||||
|
]
|
||||||
# Check we have no FKs/M2Ms with it
|
# Check we have no FKs/M2Ms with it
|
||||||
for fname, field in self.fields:
|
for fname, field in self.fields:
|
||||||
if field.remote_field:
|
if field.remote_field:
|
||||||
|
|
|
@ -4,11 +4,12 @@ import unittest
|
||||||
|
|
||||||
from django.db import connection, migrations, models, transaction
|
from django.db import connection, migrations, models, transaction
|
||||||
from django.db.migrations.migration import Migration
|
from django.db.migrations.migration import Migration
|
||||||
|
from django.db.migrations.operations import CreateModel
|
||||||
from django.db.migrations.state import ProjectState
|
from django.db.migrations.state import ProjectState
|
||||||
from django.db.models.fields import NOT_PROVIDED
|
from django.db.models.fields import NOT_PROVIDED
|
||||||
from django.db.transaction import atomic
|
from django.db.transaction import atomic
|
||||||
from django.db.utils import IntegrityError
|
from django.db.utils import IntegrityError
|
||||||
from django.test import override_settings, skipUnlessDBFeature
|
from django.test import SimpleTestCase, override_settings, skipUnlessDBFeature
|
||||||
|
|
||||||
from .models import FoodManager, FoodQuerySet, UnicodeModel
|
from .models import FoodManager, FoodQuerySet, UnicodeModel
|
||||||
from .test_base import MigrationTestBase
|
from .test_base import MigrationTestBase
|
||||||
|
@ -2414,3 +2415,9 @@ class SwappableOperationTests(OperationTestBase):
|
||||||
with connection.schema_editor() as editor:
|
with connection.schema_editor() as editor:
|
||||||
operation.database_forwards('test_rminigsw', editor, project_state, new_state)
|
operation.database_forwards('test_rminigsw', editor, project_state, new_state)
|
||||||
operation.database_backwards('test_rminigsw', editor, new_state, project_state)
|
operation.database_backwards('test_rminigsw', editor, new_state, project_state)
|
||||||
|
|
||||||
|
|
||||||
|
class TestCreateModel(SimpleTestCase):
|
||||||
|
|
||||||
|
def test_references_model_mixin(self):
|
||||||
|
CreateModel('name', [], bases=(Mixin, models.Model)).references_model('other_model')
|
||||||
|
|
Loading…
Reference in New Issue