Перейти к содержанию

Страницы и строки

Следующие методы позволяют разбивать страницы и ограничивать количество строк в запросе.

  • paginate(page: int) -> QuerySet

  • limit(limit_count: int) -> QuerySet

  • offset(offset: int) -> QuerySet

  • get() -> модель

  • Первый () -> Модель

  • Агент наборов запросов

    • QuerysetProxy.paginate(page: int) Методология
    • QuerysetProxy.limit(limit_count: int) Методология
    • QuerysetProxy.offset(offset: int) Методологии

Страница страницы

paginate(page: int, page_size: int = 20) -> QuerySet

Сочетание смещений и ограничений на основе номера страниц и размера

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Class Track(Ormar):
    Органом-де-Органом-Органом-де-Органом-Органом (
        Database=databases.Database(DATABASE),
        metadata= sqalchemy (),
        tablename="track"
    )

    id: int = ormar.Integer(primary_key =True)
    Альбом: Optional (Album)= ormar.ForeignKey(альбом)
    name: str = ormar.String(max_length =100)
    position: int = ormar.Integer()


tracks = await Track.objects.paginate (3).all()
# Will Return 20 tracks starting at row 41
(с default page size of 20)

Обратите внимание, что paginate(2) эквивалентен offset(20).limit(20).

Ограничения

limit(limit_count: int, limit_raw_sql: bool = None) -> QuerySet

Можно ограничить результат необходимым количеством родительских моделей.

Чтобы ограничить фактическое количество строк запроса базы данных, а не количество главной модели, используйте флаг limit_raw_sql и установите для него значение True.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Class Track(Ormar):
    Органомская (
        Database=databases.Database(DATABASE),
        metadata= sqalchemy (),
        tablename="track"
    )

    id: int = ormar.Integer(primary_key =True)
    Альбом: Optional (Album)= ormar.ForeignKey(альбом)
    name: str = ormar.String(max_length =100)
    position: int = ormar.Integer()


tracks = await Track.objects.limit (1).all()
Возвращение только один путь.

!!!Обратите внимание, что все методы, которые не возвращают строки, явно возвращают экземпляр QuerySet, чтобы можно было связать их друг с другом

1
2
3
So operations like `filter()`,`select_related()`,`limit()` и `offset()` etc.can be chained.

Something Like `Track.object.select_related("album").filter(album__name="Malibu").offset(1).limit(1).all()`

Компенсация

offset(offset: int, limit_raw_sql: bool = None) -> QuerySet

Результат можно также компенсировать путем необходимого количества главной модели.

Чтобы сместить фактическое количество строк запроса базы данных от количества главной модели, используйте флаг limit_raw_sql и установите для него значение True.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Class Track(Ormar):
    Органомская (
        Database=databases.Database(DATABASE),
        metadata= sqalchemy (),
        tablename="track"
    )

    id: int = ormar.Integer(primary_key =True)
    Альбом: Optional (Album)= ormar.ForeignKey(альбом)
    name: str = ormar.String(max_length =100)
    position: int = ormar.Integer()


tracks = await Track.objects.offset (1).limit(1).all()
«Возврат всего лишь один, но это время второй один»

!!!Обратите внимание, что все методы, которые не возвращают строки, явно возвращают экземпляр QuerySet, чтобы можно было связать их друг с другом

1
2
3
So operations like `filter()`,`select_related()`,`limit()` и `offset()` et c. can be chained.

Something Like `Track.object.select_related("album").filter(album__name="Malibu").offset(1).limit(1).all()`

Получить

get(**kwargs) -> модель

Получите первую строку из базы данных, соответствующую критерию настройки kwargs.

Если условие не задано, оно возвращает последнюю строку в db, отсортированную по pk.(Также нельзя использовать фильтр/исключение для задания условий).

!!!tip Для получения дополнительной информации о get посетите страницу read/get

Первый из них.

Первый () -> Модель

Получение первой строки из базы данных, отсортированной по возрастанию ключевого столбца.

!!!tip Для получения дополнительной информации о первом посещении прочитайте/first

Метод QuerysetProxy

При прямом доступе к соответствующему полю ManyToMany и ReverseForeignKey, возвращайтесь к списку связанных моделей.

Но в то же время он предоставляет подмножество API QuerySet, поэтому вы можете фильтровать, создавать и выбирать связанные модели непосредственно из родительской модели.

Страница страницы

То же самое, что и функция разбивки страниц выше, но позволяет разбивать связанные объекты на другую сторону отношения.

Tip

Ограничения

То же самое, что и функция limit выше, но позволяет разбивать связанные объекты на другую сторону отношения.

Tip

Компенсация

То же самое, что и функция смещения выше, но позволяет разбивать на страницы связанные объекты с другой стороны.

Tip