Query offset and limit for Queryset. :raises ParamsError: QuerySet indices must be slices. :raises ParamsError: Slice steps should be 1 or None. :raises ParamsError: Slice start should be non-negative number or None. :raises ParamsError: Slice stop should
(self, key: slice)
| 543 | return queryset |
| 544 | |
| 545 | def __getitem__(self, key: slice) -> QuerySet[MODEL]: |
| 546 | """ |
| 547 | Query offset and limit for Queryset. |
| 548 | |
| 549 | :raises ParamsError: QuerySet indices must be slices. |
| 550 | |
| 551 | :raises ParamsError: Slice steps should be 1 or None. |
| 552 | |
| 553 | :raises ParamsError: Slice start should be non-negative number or None. |
| 554 | |
| 555 | :raises ParamsError: Slice stop should be non-negative number greater that slice start, |
| 556 | or None. |
| 557 | """ |
| 558 | if not isinstance(key, slice): |
| 559 | raise ParamsError("QuerySet indices must be slices.") |
| 560 | |
| 561 | if not (key.step is None or (isinstance(key.step, int) and key.step == 1)): |
| 562 | raise ParamsError("Slice steps should be 1 or None.") |
| 563 | |
| 564 | start = key.start if key.start is not None else 0 |
| 565 | |
| 566 | if not isinstance(start, int) or start < 0: |
| 567 | raise ParamsError("Slice start should be non-negative number or None.") |
| 568 | if key.stop is not None and (not isinstance(key.stop, int) or key.stop <= start): |
| 569 | raise ParamsError( |
| 570 | "Slice stop should be non-negative number greater that slice start, or None.", |
| 571 | ) |
| 572 | |
| 573 | queryset = self.offset(start) |
| 574 | if key.stop: |
| 575 | queryset = queryset.limit(key.stop - start) |
| 576 | return queryset |
| 577 | |
| 578 | def distinct(self) -> QuerySet[MODEL]: |
| 579 | """ |
nothing calls this directly
no test coverage detected