diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/fields/related_lookups.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/django/db/models/fields/related_lookups.py b/django/db/models/fields/related_lookups.py index 99eadc5da7..17a8622ff9 100644 --- a/django/db/models/fields/related_lookups.py +++ b/django/db/models/fields/related_lookups.py @@ -1,3 +1,5 @@ +import warnings + from django.db.models.lookups import ( Exact, GreaterThan, @@ -7,6 +9,7 @@ from django.db.models.lookups import ( LessThan, LessThanOrEqual, ) +from django.utils.deprecation import RemovedInDjango50Warning class MultiColSource: @@ -40,6 +43,15 @@ def get_normalized_value(value, lhs): from django.db.models import Model if isinstance(value, Model): + if value.pk is None: + # When the deprecation ends, replace with: + # raise ValueError( + # "Model instances passed to related filters must be saved." + # ) + warnings.warn( + "Passing unsaved model instances to related filters is deprecated.", + RemovedInDjango50Warning, + ) value_list = [] sources = lhs.output_field.path_infos[-1].target_fields for source in sources: |
