| 1191 | ) |
| 1192 | |
| 1193 | def _make_query(self) -> None: |
| 1194 | # clean tmp records first |
| 1195 | self._select_related_idx = [] |
| 1196 | self._joined_tables = [] |
| 1197 | table = self.model._meta.basetable |
| 1198 | if self._fields_for_select: |
| 1199 | # select .only() fields |
| 1200 | self.query = self.model._meta.basequery.select() |
| 1201 | self._resolve_only(self._fields_for_select) |
| 1202 | else: |
| 1203 | # select all fields |
| 1204 | self.query = copy(self.model._meta.basequery_all_fields) # type:ignore[assignment] |
| 1205 | append_item = ( |
| 1206 | self.model, |
| 1207 | len(self.model._meta.db_fields) + len(self._annotations), |
| 1208 | table, |
| 1209 | self.model, |
| 1210 | (None,), |
| 1211 | ) |
| 1212 | self._select_related_idx.append(append_item) |
| 1213 | self.resolve_ordering( |
| 1214 | self.model, |
| 1215 | self.model._meta.basetable, |
| 1216 | self._orderings, |
| 1217 | self._annotations, |
| 1218 | self._fields_for_select, |
| 1219 | ) |
| 1220 | self.resolve_filters() |
| 1221 | if self._limit is not None: |
| 1222 | self.query._limit = self.query._wrapper_cls(self._limit) |
| 1223 | if self._offset is not None: |
| 1224 | self.query._offset = self.query._wrapper_cls(self._offset) |
| 1225 | if self._distinct: |
| 1226 | self.query._distinct = True |
| 1227 | if self._select_for_update: |
| 1228 | self.query = self.query.for_update( |
| 1229 | self._select_for_update_nowait, |
| 1230 | self._select_for_update_skip_locked, |
| 1231 | self._select_for_update_of, |
| 1232 | self._select_for_update_no_key, |
| 1233 | ) |
| 1234 | if self._select_related: |
| 1235 | for select_related in self._select_related: |
| 1236 | self._join_select_related(select_related) |
| 1237 | if self._force_indexes: |
| 1238 | self.query._force_indexes = [] |
| 1239 | self.query = self.query.force_index(*self._force_indexes) |
| 1240 | if self._use_indexes: |
| 1241 | self.query._use_indexes = [] |
| 1242 | self.query = self.query.use_index(*self._use_indexes) |
| 1243 | |
| 1244 | def __await__(self) -> Generator[Any, None, list[MODEL]]: |
| 1245 | if self._db is None: |