Refs #24201 -- Ignored order_with_respect_to private fields in migrations.
Thanks Tim for the review.
This commit is contained in:
parent
18900e55c5
commit
c0118ff80b
|
@ -443,6 +443,9 @@ class ModelState(object):
|
||||||
for key in ["unique_together", "index_together", "order_with_respect_to"]:
|
for key in ["unique_together", "index_together", "order_with_respect_to"]:
|
||||||
if key in options:
|
if key in options:
|
||||||
del options[key]
|
del options[key]
|
||||||
|
# Private fields are ignored, so remove options that refer to them.
|
||||||
|
elif options.get('order_with_respect_to') in {field.name for field in model._meta.private_fields}:
|
||||||
|
del options['order_with_respect_to']
|
||||||
|
|
||||||
def flatten_bases(model):
|
def flatten_bases(model):
|
||||||
bases = []
|
bases = []
|
||||||
|
|
|
@ -9,6 +9,7 @@ from django.db.migrations.state import (
|
||||||
ModelState, ProjectState, get_related_models_recursive,
|
ModelState, ProjectState, get_related_models_recursive,
|
||||||
)
|
)
|
||||||
from django.test import SimpleTestCase, override_settings
|
from django.test import SimpleTestCase, override_settings
|
||||||
|
from django.test.utils import isolate_apps
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
|
|
||||||
from .models import (
|
from .models import (
|
||||||
|
@ -911,6 +912,19 @@ class ModelStateTests(SimpleTestCase):
|
||||||
self.assertEqual([name for name, mgr in food_state.managers], ['food_mgr'])
|
self.assertEqual([name for name, mgr in food_state.managers], ['food_mgr'])
|
||||||
self.assertEqual(food_state.managers[0][1].args, ('a', 'b', 1, 2))
|
self.assertEqual(food_state.managers[0][1].args, ('a', 'b', 1, 2))
|
||||||
|
|
||||||
|
@isolate_apps('migrations', 'django.contrib.contenttypes')
|
||||||
|
def test_order_with_respect_to_private_field(self):
|
||||||
|
class PrivateFieldModel(models.Model):
|
||||||
|
content_type = models.ForeignKey('contenttypes.ContentType', models.CASCADE)
|
||||||
|
object_id = models.PositiveIntegerField()
|
||||||
|
private = GenericForeignKey()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_with_respect_to = 'private'
|
||||||
|
|
||||||
|
state = ModelState.from_model(PrivateFieldModel)
|
||||||
|
self.assertNotIn('order_with_respect_to', state.options)
|
||||||
|
|
||||||
|
|
||||||
class RelatedModelsTests(SimpleTestCase):
|
class RelatedModelsTests(SimpleTestCase):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue