Allows to prefetch related models during the same query. **With `select_related` always only one query is run against the database**, meaning that one (sometimes complicated) join is generated and later nested models are processed in python. To fetch relate
(self, related: Union[list, str, FieldAccessor])
| 374 | return self.filter(_exclude=True, *args, **kwargs) |
| 375 | |
| 376 | def select_related(self, related: Union[list, str, FieldAccessor]) -> "QuerySet[T]": |
| 377 | """ |
| 378 | Allows to prefetch related models during the same query. |
| 379 | |
| 380 | **With `select_related` always only one query is run against the database**, |
| 381 | meaning that one (sometimes complicated) join is generated and later nested |
| 382 | models are processed in python. |
| 383 | |
| 384 | To fetch related model use `ForeignKey` names. |
| 385 | |
| 386 | To chain related `Models` relation use double underscores between names. |
| 387 | |
| 388 | :param related: list of relation field names, can be linked by '__' to nest |
| 389 | :type related: Union[list, str] |
| 390 | :return: QuerySet |
| 391 | :rtype: QuerySet |
| 392 | """ |
| 393 | if not isinstance(related, list): |
| 394 | related = [related] |
| 395 | related = cast(list, extract_access_chains(related)) |
| 396 | |
| 397 | related = sorted(list(set(list(self._select_related) + related))) |
| 398 | return self.rebuild_self(select_related=related) |
| 399 | |
| 400 | def select_all(self, follow: bool = False) -> "QuerySet[T]": |
| 401 | """ |