diff options
| author | Prashant Pandey <prashantpandey94551@gmail.com> | 2023-11-23 10:29:52 +0530 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-11-23 21:17:44 +0100 |
| commit | a8adb6aa6cc6b9efd043acc980b5744bc211c760 (patch) | |
| tree | f9c284c705b95baba0c2dc450bb18798377a70dc | |
| parent | a89c715c3bcf7ab1a90747cf8658ebce6304b6e4 (diff) | |
Fixed #26827 -- Improved ModelState error message when relations refer model classes.
| -rw-r--r-- | AUTHORS | 1 | ||||
| -rw-r--r-- | django/db/migrations/state.py | 10 | ||||
| -rw-r--r-- | tests/migrations/test_state.py | 8 |
3 files changed, 11 insertions, 8 deletions
@@ -816,6 +816,7 @@ answer newbie questions, and generally made Django that much better: plisk polpak@yahoo.com pradeep.gowda@gmail.com + Prashant Pandey <https://prashantpandey9.in> Preston Holmes <preston@ptone.com> Preston Timmons <prestontimmons@gmail.com> Priyank Panchal <priyankpanchal872000@gmail.com> diff --git a/django/db/migrations/state.py b/django/db/migrations/state.py index 4aa6e1f6cc..5ffd7fc07a 100644 --- a/django/db/migrations/state.py +++ b/django/db/migrations/state.py @@ -738,13 +738,15 @@ class ModelState: # Sanity-check that relation fields are NOT referring to a model class. if field.is_relation and hasattr(field.related_model, "_meta"): raise ValueError( - 'ModelState.fields cannot refer to a model class - "%s.to" does. ' - "Use a string reference instead." % name + 'Model fields in "ModelState.fields" cannot refer to a model class ' + f'- "{self.app_label}.{self.name}.{name}.to" does. Use a string ' + "reference instead." ) if field.many_to_many and hasattr(field.remote_field.through, "_meta"): raise ValueError( - 'ModelState.fields cannot refer to a model class - "%s.through" ' - "does. Use a string reference instead." % name + 'Model fields in "ModelState.fields" cannot refer to a model class ' + f'- "{self.app_label}.{self.name}.{name}.through" does. Use a ' + "string reference instead." ) # Sanity-check that indexes have their name set. for index in self.options["indexes"]: diff --git a/tests/migrations/test_state.py b/tests/migrations/test_state.py index f1ac78c992..686eba4500 100644 --- a/tests/migrations/test_state.py +++ b/tests/migrations/test_state.py @@ -1651,8 +1651,8 @@ class ModelStateTests(SimpleTestCase): field = models.ForeignKey(UnicodeModel, models.CASCADE) with self.assertRaisesMessage( ValueError, - 'ModelState.fields cannot refer to a model class - "field.to" does. ' - "Use a string reference instead.", + 'Model fields in "ModelState.fields" cannot refer to a model class - ' + '"app.Model.field.to" does. Use a string reference instead.', ): ModelState("app", "Model", [("field", field)]) @@ -1661,8 +1661,8 @@ class ModelStateTests(SimpleTestCase): field.remote_field.through = UnicodeModel with self.assertRaisesMessage( ValueError, - 'ModelState.fields cannot refer to a model class - "field.through" does. ' - "Use a string reference instead.", + 'Model fields in "ModelState.fields" cannot refer to a model class - ' + '"app.Model.field.through" does. Use a string reference instead.', ): ModelState("app", "Model", [("field", field)]) |
