Apply ON CONFLICT ... DO UPDATE to both query variants.
(
self,
insert_query: QueryBuilder,
insert_query_all: QueryBuilder,
update_fields: Iterable[str],
omit_fields: set[str],
)
| 2090 | return [c for fn, c in zip(field_names, columns) if fn not in omit_fields] |
| 2091 | |
| 2092 | def _apply_on_conflict( |
| 2093 | self, |
| 2094 | insert_query: QueryBuilder, |
| 2095 | insert_query_all: QueryBuilder, |
| 2096 | update_fields: Iterable[str], |
| 2097 | omit_fields: set[str], |
| 2098 | ) -> tuple[QueryBuilder, QueryBuilder]: |
| 2099 | """Apply ON CONFLICT ... DO UPDATE to both query variants.""" |
| 2100 | effective_update_fields = ( |
| 2101 | [f for f in update_fields if f not in omit_fields] |
| 2102 | if omit_fields |
| 2103 | else list(update_fields) |
| 2104 | ) |
| 2105 | alias = f"new_{self.model._meta.db_table}" |
| 2106 | insert_query = insert_query.as_(alias).on_conflict(*(self._on_conflict or [])) |
| 2107 | insert_query_all = insert_query_all.as_(alias).on_conflict(*(self._on_conflict or [])) |
| 2108 | for update_field in effective_update_fields: |
| 2109 | insert_query = insert_query.do_update(update_field) |
| 2110 | insert_query_all = insert_query_all.do_update(update_field) |
| 2111 | return insert_query, insert_query_all |
| 2112 | |
| 2113 | def _make_queries(self, omit_fields: set[str] | None = None) -> tuple[str, str]: |
| 2114 | if omit_fields is None: |