(self, compiler, connection)
| 114 | return sql, params |
| 115 | |
| 116 | def process_rhs(self, compiler, connection): |
| 117 | value = self.rhs |
| 118 | if self.bilateral_transforms: |
| 119 | if self.rhs_is_direct_value(): |
| 120 | # Do not call get_db_prep_lookup here as the value will be |
| 121 | # transformed before being used for lookup |
| 122 | value = Value(value, output_field=self.lhs.output_field) |
| 123 | value = self.apply_bilateral_transforms(value) |
| 124 | value = value.resolve_expression(compiler.query) |
| 125 | if hasattr(value, "as_sql"): |
| 126 | sql, params = compiler.compile(value) |
| 127 | if isinstance(value, ColPairs): |
| 128 | raise ValueError( |
| 129 | "CompositePrimaryKey cannot be used as a lookup value." |
| 130 | ) |
| 131 | # Ensure expression is wrapped in parentheses to respect operator |
| 132 | # precedence but avoid double wrapping as it can be misinterpreted |
| 133 | # on some backends (e.g. subqueries on SQLite). |
| 134 | if not isinstance(value, Value) and sql and sql[0] != "(": |
| 135 | sql = "(%s)" % sql |
| 136 | return sql, params |
| 137 | else: |
| 138 | return self.get_db_prep_lookup(value, connection) |
| 139 | |
| 140 | def rhs_is_direct_value(self): |
| 141 | return not hasattr(self.rhs, "as_sql") |
nothing calls this directly
no test coverage detected