Aller au contenu

Pagination et nombre de lignes

La méthode suivante vous permet de paginer et de limiter le nombre de lignes dans une requête.

  • paginate(page: int) -> QuerySet

  • limit(limit_count: int) -> QuerySet

  • offset(offset: int) -> QuerySet

  • get() -> Modèle

  • Première () -> Modèle

  • Query Set Agent pour

    • QuerysetProxy.paginate(page: int) Méthodes
    • QuerysetProxy.limit(limit_count: int) Méthode
    • QuerysetProxy.offset(offset: int) Méthodes

pagination

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

Combinaison de méthodes de décalage et de restriction basées sur le numéro de page et la taille

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Classe Track(modèle ormar):
    ormar_config = ormar.OrmarConfig(
        database=databases.Database(DATABASE_URL),
        metadata=sqlalchemy.MetaData(),
        tablename="track"
    )

    id: int = ormar.Integer(primary_key=True)
    Album: Optional[Album] = ormar.ForeignKey(Album)
    nom: str = ormar.String(max_length=100)
    position: int = ormar.Integer()


tracks = await Track.objects.paginate(3).all()
# will return 20 tracks starting à la ligne 41
# (avec page par défaut taille de 20)

Notez que paginate(2) est équivalent à offset(20).limit(20)

Limitation des limites

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

Vous pouvez limiter les résultats au nombre de modèles parents dont vous avez besoin.

Pour limiter le nombre réel de lignes de requête de la base de données plutôt que le nombre de modèles principaux, utilisez l'indicateur de paramètre limit_raw_sql et définissez-le sur True.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Classe Track(modèle. ormar):
    OrmarConfig(
        database=databases.Database(DATABASE_URL),
        metadata=sqlalchemy.MetaData(),
        tablename="track"
    )

    id: int = ormar.Integer(primary_key=True)
    Album: Optional[Album] = ormar.ForeignKey(Album)
    name: str = ormar.String(max_length=100)
    position: int = ormar.Integer()


tracks = await Track.objects.limit(1).all()
# will return juste une piste

!!!Remarque Toutes les méthodes qui ne renvoient pas de lignes renvoient explicitement une instance QuerySet afin que vous puissiez les lier ensemble.

1
2
3
Opérations comme `filter()`, `select_related()`, `limit()` et `offset()` Etc. peut être chainé.

Quelque chose comme `Track.object.select_related("album").filter(album__name="Malibu").offset(1).limit(1).all()`

compensation

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

Vous pouvez également compenser les résultats par le nombre de modèles principaux dont vous avez besoin.

Pour décaler le nombre réel de lignes de requête de la base de données plutôt que le nombre de modèles principaux, utilisez l'indicateur de paramètre limit_raw_sql et définissez-le sur True.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Classe Track(modèle. ormar):
    OrmarConfig(
        database=databases.Database(DATABASE_URL),
        metadata=sqlalchemy.MetaData(),
        tablename="track"
    )

    id: int = ormar.Integer(primary_key=True)
    Album: Optional[Album] = ormar.ForeignKey(Album)
    nom: str = ormar.String(max_length=100)
    position: int = ormar.Integer()


tracks = await Track.objects.offset(1).limit(1).all()
#retournera juste une piste, mais cette fois la deuxième

!!!Remarque Toutes les méthodes qui ne renvoient pas de lignes renvoient explicitement une instance QuerySet afin que vous puissiez les lier ensemble.

1
2
3
Ainsi, les opérations comme `filter()`,`select_related()`,`limit()` et `offset()` etc. peuvent être enchaînées.

Quelque chose comme `Track.object.select_related("album").filter(album__name="Malibu").offset(1).limit(1).all()`

obtenir

get(**kwargs) -> Modèle

Obtient la première ligne de la base de données qui répond aux critères de configuration kwargs.

Si aucune condition n'est définie, elle renvoie la dernière ligne triée par pk dans db.(vous ne pouvez pas non plus utiliser le filtrage/exclusion pour définir une condition).

!!!Tip Pour en savoir plus sur get, visitez read/get

Le premier

Première () -> Modèle

Obtient la première ligne de la base de données, triée par ordre croissant de colonnes de clé primaire.

!!!tip Pour en savoir plus sur votre première visite, lisez/first

La méthode QuerysetProxy

Lorsque vous accédez directement au champ ManyToMany associé ainsi qu'à la clé ReverseForeignKey, une liste des modèles associés est renvoyée.

Mais en même temps, il expose un sous-ensemble de l'API QuerySet, de sorte que vous pouvez filtrer, créer, sélectionner des modèles pertinents, etc. directement à partir du modèle parent.

pagination

Exactement la même fonctionnalité de pagination que ci-dessus, mais vous permet de paginer les objets associés de l'autre côté de la relation.

!!!conseil Pour en savoir plus sur Querysetproxy, visitez la section Querysetproxy

Limitation des limites

Exactement comme la fonction limit ci-dessus, mais vous permet de paginer les objets associés de l'autre côté de la relation.

!!!conseil Pour en savoir plus sur Querysetproxy, visitez la section Querysetproxy

compensation

Exactement la même fonction de décalage que ci-dessus, mais vous permet de paginer les objets associés de l'autre côté de la relation.

!!!conseil Pour en savoir plus sur Querysetproxy, visitez la section Querysetproxy