(self)
| 1947 | self._queries: list[QueryBuilder] = [] |
| 1948 | |
| 1949 | def _make_queries(self) -> list[tuple[str, list[Any]]]: |
| 1950 | table = self.model._meta.basetable |
| 1951 | self.query = self._db.query_class.update(table) |
| 1952 | if self.capabilities.support_update_limit_order_by and self._limit: |
| 1953 | self.query._limit = self.query._wrapper_cls(self._limit) |
| 1954 | self.resolve_ordering( |
| 1955 | model=self.model, |
| 1956 | table=table, |
| 1957 | orderings=self._orderings, |
| 1958 | annotations=self._annotations, |
| 1959 | ) |
| 1960 | |
| 1961 | self.resolve_filters() |
| 1962 | pk_attr = self.model._meta.pk_attr |
| 1963 | source_pk_attr = self.model._meta.fields_map[pk_attr].source_field or pk_attr |
| 1964 | pk = Field(source_pk_attr) |
| 1965 | for objects_item in chunk(self._objects, self._batch_size): |
| 1966 | query = copy(self.query) |
| 1967 | for field in self.fields: |
| 1968 | case = Case() |
| 1969 | pk_list = [] |
| 1970 | for obj in objects_item: |
| 1971 | pk_value = self.model._meta.fields_map[pk_attr].to_db_value(obj.pk, None) |
| 1972 | field_obj = obj._meta.fields_map[field] |
| 1973 | field_value = field_obj.to_db_value(getattr(obj, field), obj) |
| 1974 | case.when( |
| 1975 | pk == pk_value, |
| 1976 | ( |
| 1977 | Cast( |
| 1978 | self.query._wrapper_cls(field_value), |
| 1979 | field_obj.get_for_dialect( |
| 1980 | self._db.schema_generator.DIALECT, "SQL_TYPE" |
| 1981 | ), |
| 1982 | ) |
| 1983 | if self._db.schema_generator.DIALECT == "postgres" |
| 1984 | else self.query._wrapper_cls(field_value) |
| 1985 | ), |
| 1986 | ) |
| 1987 | pk_list.append(pk_value) |
| 1988 | query = query.set(field, case) |
| 1989 | query = query.where(pk.isin(pk_list)) |
| 1990 | self._queries.append(query) |
| 1991 | return [query.get_parameterized_sql() for query in self._queries] |
| 1992 | |
| 1993 | async def _execute_many(self, queries_with_params: list[tuple[str, list[Any]]]) -> int: |
| 1994 | count = 0 |
no test coverage detected