Opened 3 years ago

Last modified 2 years ago

#24267 new Cleanup/optimization

Simplify Query.build_filter()

Reported by: Anssi Kääriäinen Owned by: nobody
Component: Database layer (models, ORM) Version: master
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Now that the old way of building lookups isn't supported any more, we could restructure build_filter(). Steps included:

  • Remove related field's get_lookup_constraint(), instead write proper lookups for relational fields, too.
  • Do not use lookup_name in build_filter(), instead use Lookup flags where needed.
  • Ultimate goal could be usage of resolve_ref() in build_filter() instead of direct use of setup_joins(). In this case build_filter() would be simplified a lot. It is uncertain if this goal is achievable.

Change History (3)

comment:1 Changed 3 years ago by Tim Graham

Has patch: set
Patch needs improvement: set
Triage Stage: UnreviewedAccepted

PR (currently has a test failure)

comment:2 Changed 3 years ago by Tim Graham <timograham@…>

In b68212f:

Refs #24267 -- Implemented lookups for related fields

Previously related fields didn't implement get_lookup, instead
related fields were treated specially. This commit removed some of
the special handling. In particular, related fields return Lookup
instances now, too.

Other notable changes in this commit is removal of support for
annotations in names_to_path().

comment:3 Changed 2 years ago by Tim Graham

Has patch: unset
Patch needs improvement: unset
Note: See TracTickets for help on using tickets.
Back to Top