| 908 | return query.resolve_ref(self.name, allow_joins, reuse, summarize) |
| 909 | |
| 910 | def replace_expressions(self, replacements): |
| 911 | if (replacement := replacements.get(self)) is not None: |
| 912 | return replacement |
| 913 | field_name, *transforms = self.name.split(LOOKUP_SEP) |
| 914 | # Avoid unnecessarily looking up replacements with field_name again as |
| 915 | # in the vast majority of cases F instances won't be composed of any |
| 916 | # lookups. |
| 917 | if not transforms: |
| 918 | return self |
| 919 | if ( |
| 920 | replacement := replacements.get(F(field_name)) |
| 921 | ) is None or replacement._output_field_or_none is None: |
| 922 | return self |
| 923 | for transform in transforms: |
| 924 | transform_class = replacement.get_transform(transform) |
| 925 | if transform_class is None: |
| 926 | return self |
| 927 | replacement = transform_class(replacement) |
| 928 | return replacement |
| 929 | |
| 930 | def asc(self, **kwargs): |
| 931 | return OrderBy(self, **kwargs) |