1
0
mirror of https://github.com/django/django.git synced 2025-10-24 14:16:09 +00:00

Fixed #26720 -- Prevented invalid CreateModel optimizations of related fields.

This commit is contained in:
Simon Charette
2017-02-02 22:09:12 -05:00
committed by Tim Graham
parent a97845a823
commit ad82900ad9
3 changed files with 77 additions and 18 deletions

View File

@@ -270,6 +270,35 @@ class OptimizerTests(SimpleTestCase):
app_label="testapp",
)
# This could be optimized a bit more but it generates a valid set of
# operations.
self.assertOptimizesTo(
[
migrations.CreateModel('Book', [('name', models.CharField(max_length=255))]),
migrations.CreateModel('Person', [('name', models.CharField(max_length=255))]),
migrations.AddField('book', 'author', models.ForeignKey('test_app.Person', models.CASCADE)),
migrations.CreateModel('Review', [('book', models.ForeignKey('test_app.Book', models.CASCADE))]),
migrations.CreateModel('Reviewer', [('name', models.CharField(max_length=255))]),
migrations.AddField('review', 'reviewer', models.ForeignKey('test_app.Reviewer', models.CASCADE)),
migrations.RemoveField('book', 'author'),
migrations.DeleteModel('Person'),
],
[
migrations.CreateModel('Person', [('name', models.CharField(max_length=255))]),
migrations.CreateModel('Book', [
('name', models.CharField(max_length=255)),
('author', models.ForeignKey('test_app.Person', models.CASCADE)),
]),
migrations.CreateModel('Reviewer', [('name', models.CharField(max_length=255))]),
migrations.CreateModel('Review', [
('book', models.ForeignKey('test_app.Book', models.CASCADE)),
('reviewer', models.ForeignKey('test_app.Reviewer', models.CASCADE)),
]),
migrations.RemoveField('book', 'author'),
migrations.DeleteModel('Person'),
],
)
def test_create_model_add_field(self):
"""
AddField should optimize into CreateModel.