(self)
| 50 | return f"TO_TSVECTOR({field_sql})" |
| 51 | |
| 52 | def _get_generated_sql(self) -> str | None: |
| 53 | if not self.stored: |
| 54 | return None |
| 55 | parts: list[str] = [] |
| 56 | for idx, field_name in enumerate(self.source_fields): |
| 57 | field = self.model._meta.fields_map.get(field_name) |
| 58 | if field is None: |
| 59 | raise ConfigurationError(f"Unknown source field '{field_name}'.") |
| 60 | if not field.has_db_field: |
| 61 | raise ConfigurationError( |
| 62 | f"Source field '{field_name}' does not map to a database column." |
| 63 | ) |
| 64 | db_field = field.source_field or field.model_field_name |
| 65 | vector_sql = self._to_tsvector_sql(db_field) |
| 66 | if self.weights is not None: |
| 67 | weight = self._quote_sql_literal(self.weights[idx]) |
| 68 | vector_sql = f"SETWEIGHT({vector_sql},{weight})" |
| 69 | parts.append(vector_sql) |
| 70 | expression = " || ".join(parts) |
| 71 | return f"GENERATED ALWAYS AS ({expression}) STORED" |
| 72 | |
| 73 | def describe(self, serializable: bool) -> dict: |
| 74 | desc = super().describe(serializable) |
no test coverage detected