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"]:
|
||||
if key in options:
|
||||
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):
|
||||
bases = []
|
||||
|
|
|
@ -9,6 +9,7 @@ from django.db.migrations.state import (
|
|||
ModelState, ProjectState, get_related_models_recursive,
|
||||
)
|
||||
from django.test import SimpleTestCase, override_settings
|
||||
from django.test.utils import isolate_apps
|
||||
from django.utils import six
|
||||
|
||||
from .models import (
|
||||
|
@ -911,6 +912,19 @@ class ModelStateTests(SimpleTestCase):
|
|||
self.assertEqual([name for name, mgr in food_state.managers], ['food_mgr'])
|
||||
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):
|
||||
|
||||
|
|
Loading…
Reference in New Issue