From 8b1ff0da4b162e87edebd94e61f2cd153e9e159d Mon Sep 17 00:00:00 2001 From: David Wobrock Date: Tue, 18 Apr 2023 10:20:32 +0200 Subject: Refs #16055 -- Deprecated get_joining_columns()/get_reverse_joining_columns() methods. --- django/db/models/fields/related.py | 12 ++++++++++++ django/db/models/fields/reverse_related.py | 7 +++++++ django/db/models/sql/datastructures.py | 12 ++++++++++++ 3 files changed, 31 insertions(+) (limited to 'django') diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 7a49861164..2c0527d2b7 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -1,5 +1,6 @@ import functools import inspect +import warnings from functools import partial from django import forms @@ -13,6 +14,7 @@ from django.db.models.constants import LOOKUP_SEP from django.db.models.deletion import CASCADE, SET_DEFAULT, SET_NULL from django.db.models.query_utils import PathInfo from django.db.models.utils import make_model_tuple +from django.utils.deprecation import RemovedInDjango60Warning from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ @@ -777,12 +779,22 @@ class ForeignObject(RelatedField): return attname, None def get_joining_columns(self, reverse_join=False): + warnings.warn( + "ForeignObject.get_joining_columns() is deprecated. Use " + "get_joining_fields() instead.", + RemovedInDjango60Warning, + ) source = self.reverse_related_fields if reverse_join else self.related_fields return tuple( (lhs_field.column, rhs_field.column) for lhs_field, rhs_field in source ) def get_reverse_joining_columns(self): + warnings.warn( + "ForeignObject.get_reverse_joining_columns() is deprecated. Use " + "get_reverse_joining_fields() instead.", + RemovedInDjango60Warning, + ) return self.get_joining_columns(reverse_join=True) def get_joining_fields(self, reverse_join=False): diff --git a/django/db/models/fields/reverse_related.py b/django/db/models/fields/reverse_related.py index f3da8f8bf2..c74e92ba89 100644 --- a/django/db/models/fields/reverse_related.py +++ b/django/db/models/fields/reverse_related.py @@ -8,8 +8,10 @@ in the ``remote_field`` attribute of the field. They also act as reverse fields for the purposes of the Meta API because they're the closest concept currently available. """ +import warnings from django.core import exceptions +from django.utils.deprecation import RemovedInDjango60Warning from django.utils.functional import cached_property from django.utils.hashable import make_hashable @@ -193,6 +195,11 @@ class ForeignObjectRel(FieldCacheMixin): return bool(self.related_name) and self.related_name[-1] == "+" def get_joining_columns(self): + warnings.warn( + "ForeignObjectRel.get_joining_columns() is deprecated. Use " + "get_joining_fields() instead.", + RemovedInDjango60Warning, + ) return self.field.get_reverse_joining_columns() def get_joining_fields(self): diff --git a/django/db/models/sql/datastructures.py b/django/db/models/sql/datastructures.py index 46a977188a..dadd7c063d 100644 --- a/django/db/models/sql/datastructures.py +++ b/django/db/models/sql/datastructures.py @@ -2,8 +2,11 @@ Useful auxiliary data structures for query construction. Not useful outside the SQL domain. """ +import warnings + from django.core.exceptions import FullResultSet from django.db.models.sql.constants import INNER, LOUTER +from django.utils.deprecation import RemovedInDjango60Warning class MultiJoin(Exception): @@ -68,6 +71,11 @@ class Join: for lhs_field, rhs_field in self.join_fields ) else: + warnings.warn( + "The usage of get_joining_columns() in Join is deprecated. Implement " + "get_joining_fields() instead.", + RemovedInDjango60Warning, + ) self.join_fields = None self.join_cols = join_field.get_joining_columns() # Along which field (or ForeignObjectRel in the reverse join case) @@ -87,9 +95,13 @@ class Join: qn = compiler.quote_name_unless_alias qn2 = connection.ops.quote_name # Add a join condition for each pair of joining columns. + # RemovedInDjango60Warning: when the depraction ends, replace with: + # for lhs, rhs in self.join_field: join_fields = self.join_fields or self.join_cols for lhs, rhs in join_fields: if isinstance(lhs, str): + # RemovedInDjango60Warning: when the depraction ends, remove + # the branch for strings. lhs_full_name = "%s.%s" % (qn(self.parent_alias), qn2(lhs)) rhs_full_name = "%s.%s" % (qn(self.table_alias), qn2(rhs)) else: -- cgit v1.2.1