1
0
mirror of https://github.com/django/django.git synced 2025-10-24 06:06:09 +00:00

Refs #34007, Refs #35359 -- Added Q.referenced_based_fields property.

Thank you to Mariusz Felisiak and Natalia Bidart for the reviews.
This commit is contained in:
David Sanders
2024-04-21 16:46:26 +10:00
committed by Sarah Boyce
parent 39828fa778
commit 97d48cd3c6
2 changed files with 41 additions and 0 deletions

View File

@@ -175,6 +175,19 @@ class Q(tree.Node):
def __hash__(self):
return hash(self.identity)
@cached_property
def referenced_base_fields(self):
"""
Retrieve all base fields referenced directly or through F expressions
excluding any fields referenced through joins.
"""
# Avoid circular imports.
from django.db.models.sql import query
return {
child.split(LOOKUP_SEP, 1)[0] for child in query.get_children_from_q(self)
}
class DeferredAttribute:
"""