Allows to prefetch related models during query - but opposite to `select_related` each subsequent model is fetched in a separate database query. **With `prefetch_related` always one query per Model is run against the database**, meaning that you will have multiple q
(
self, related: Union[list, str, FieldAccessor]
)
| 424 | return self.rebuild_self(select_related=relations) |
| 425 | |
| 426 | def prefetch_related( |
| 427 | self, related: Union[list, str, FieldAccessor] |
| 428 | ) -> "QuerySet[T]": |
| 429 | """ |
| 430 | Allows to prefetch related models during query - but opposite to |
| 431 | `select_related` each subsequent model is fetched in a separate database query. |
| 432 | |
| 433 | **With `prefetch_related` always one query per Model is run against the |
| 434 | database**, meaning that you will have multiple queries executed one |
| 435 | after another. |
| 436 | |
| 437 | To fetch related model use `ForeignKey` names. |
| 438 | |
| 439 | To chain related `Models` relation use double underscores between names. |
| 440 | |
| 441 | :param related: list of relation field names, can be linked by '__' to nest |
| 442 | :type related: Union[list, str] |
| 443 | :return: QuerySet |
| 444 | :rtype: QuerySet |
| 445 | """ |
| 446 | if not isinstance(related, list): |
| 447 | related = [related] |
| 448 | related = cast(list, extract_access_chains(related)) |
| 449 | |
| 450 | related = list(set(list(self._prefetch_related) + related)) |
| 451 | return self.rebuild_self(prefetch_related=related) |
| 452 | |
| 453 | def flatten_fields( |
| 454 | self, |