mirror of
https://github.com/django/django.git
synced 2025-10-07 17:20:48 +00:00
[1.10.x] Fixed #25044 -- Fixed migrations for renaming ManyToManyField's through model.
Backport of f1e408ff40
from master
This commit is contained in:
parent
ab92351bc6
commit
b737c0f5db
5 changed files with 95 additions and 0 deletions
|
@ -727,6 +727,47 @@ class OperationTests(OperationTestBase):
|
|||
self.assertEqual(Rider.objects.count(), 2)
|
||||
self.assertEqual(Pony._meta.get_field('riders').remote_field.through.objects.count(), 2)
|
||||
|
||||
def test_rename_m2m_through_model(self):
|
||||
app_label = "test_rename_through"
|
||||
project_state = self.apply_operations(app_label, ProjectState(), operations=[
|
||||
migrations.CreateModel("Rider", fields=[
|
||||
("id", models.AutoField(primary_key=True)),
|
||||
]),
|
||||
migrations.CreateModel("Pony", fields=[
|
||||
("id", models.AutoField(primary_key=True)),
|
||||
]),
|
||||
migrations.CreateModel("PonyRider", fields=[
|
||||
("id", models.AutoField(primary_key=True)),
|
||||
("rider", models.ForeignKey("test_rename_through.Rider", models.CASCADE)),
|
||||
("pony", models.ForeignKey("test_rename_through.Pony", models.CASCADE)),
|
||||
]),
|
||||
migrations.AddField(
|
||||
"Pony",
|
||||
"riders",
|
||||
models.ManyToManyField("test_rename_through.Rider", through="test_rename_through.PonyRider"),
|
||||
),
|
||||
])
|
||||
Pony = project_state.apps.get_model(app_label, "Pony")
|
||||
Rider = project_state.apps.get_model(app_label, "Rider")
|
||||
PonyRider = project_state.apps.get_model(app_label, "PonyRider")
|
||||
pony = Pony.objects.create()
|
||||
rider = Rider.objects.create()
|
||||
PonyRider.objects.create(pony=pony, rider=rider)
|
||||
|
||||
project_state = self.apply_operations(app_label, project_state, operations=[
|
||||
migrations.RenameModel("PonyRider", "PonyRider2"),
|
||||
])
|
||||
Pony = project_state.apps.get_model(app_label, "Pony")
|
||||
Rider = project_state.apps.get_model(app_label, "Rider")
|
||||
PonyRider = project_state.apps.get_model(app_label, "PonyRider2")
|
||||
pony = Pony.objects.first()
|
||||
rider = Rider.objects.create()
|
||||
PonyRider.objects.create(pony=pony, rider=rider)
|
||||
self.assertEqual(Pony.objects.count(), 1)
|
||||
self.assertEqual(Rider.objects.count(), 2)
|
||||
self.assertEqual(PonyRider.objects.count(), 2)
|
||||
self.assertEqual(pony.riders.count(), 2)
|
||||
|
||||
def test_add_field(self):
|
||||
"""
|
||||
Tests the AddField operation.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue