| 184 | return sql % tuple(schema_editor.quote_value(p) for p in params) |
| 185 | |
| 186 | def create_sql(self, model, schema_editor, using="", **kwargs): |
| 187 | include = [ |
| 188 | model._meta.get_field(field_name).column for field_name in self.include |
| 189 | ] |
| 190 | condition = self._get_condition_sql(model, schema_editor) |
| 191 | if self.expressions: |
| 192 | index_expressions = [] |
| 193 | for expression in self.expressions: |
| 194 | index_expression = IndexExpression(expression) |
| 195 | index_expression.set_wrapper_classes(schema_editor.connection) |
| 196 | index_expressions.append(index_expression) |
| 197 | expressions = ExpressionList(*index_expressions).resolve_expression( |
| 198 | Query(model, alias_cols=False), |
| 199 | ) |
| 200 | fields = None |
| 201 | col_suffixes = None |
| 202 | else: |
| 203 | fields = [ |
| 204 | model._meta.get_field(field_name) |
| 205 | for field_name, _ in self.fields_orders |
| 206 | ] |
| 207 | if schema_editor.connection.features.supports_index_column_ordering: |
| 208 | col_suffixes = [order[1] for order in self.fields_orders] |
| 209 | else: |
| 210 | col_suffixes = [""] * len(self.fields_orders) |
| 211 | expressions = None |
| 212 | return schema_editor._create_index_sql( |
| 213 | model, |
| 214 | fields=fields, |
| 215 | name=self.name, |
| 216 | using=using, |
| 217 | db_tablespace=self.db_tablespace, |
| 218 | col_suffixes=col_suffixes, |
| 219 | opclasses=self.opclasses, |
| 220 | condition=condition, |
| 221 | include=include, |
| 222 | expressions=expressions, |
| 223 | **kwargs, |
| 224 | ) |
| 225 | |
| 226 | def remove_sql(self, model, schema_editor, **kwargs): |
| 227 | return schema_editor._delete_index_sql(model, self.name, **kwargs) |