mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Refs #31499 -- Ignored field ordering to determine ModelState equality.
This commit is contained in:
parent
0f2885e3f6
commit
696024fb73
@ -603,7 +603,7 @@ class ModelState:
|
||||
(self.name == other.name) and
|
||||
(len(self.fields) == len(other.fields)) and
|
||||
all((k1 == k2 and (f1.deconstruct()[1:] == f2.deconstruct()[1:]))
|
||||
for (k1, f1), (k2, f2) in zip(self.fields, other.fields)) and
|
||||
for (k1, f1), (k2, f2) in zip(sorted(self.fields), sorted(other.fields))) and
|
||||
(self.options == other.options) and
|
||||
(self.bases == other.bases) and
|
||||
(self.managers == other.managers)
|
||||
|
@ -1042,6 +1042,28 @@ class ModelStateTests(SimpleTestCase):
|
||||
with self.assertRaisesMessage(InvalidBasesError, "Cannot resolve bases for [<ModelState: 'app.Model'>]"):
|
||||
project_state.apps
|
||||
|
||||
def test_fields_ordering_equality(self):
|
||||
state = ModelState(
|
||||
'migrations',
|
||||
'Tag',
|
||||
[
|
||||
('id', models.AutoField(primary_key=True)),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('hidden', models.BooleanField()),
|
||||
],
|
||||
)
|
||||
reordered_state = ModelState(
|
||||
'migrations',
|
||||
'Tag',
|
||||
[
|
||||
('id', models.AutoField(primary_key=True)),
|
||||
# Purposedly re-ordered.
|
||||
('hidden', models.BooleanField()),
|
||||
('name', models.CharField(max_length=100)),
|
||||
],
|
||||
)
|
||||
self.assertEqual(state, reordered_state)
|
||||
|
||||
@override_settings(TEST_SWAPPABLE_MODEL='migrations.SomeFakeModel')
|
||||
def test_create_swappable(self):
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user