Ga naar inhoud

Paging en lijntelling

Met de volgende methoden kunt u het aantal rijen in een query pagineren en beperken.

  • paginate(page: int) -> QuerySet

  • limit(limit_count: int) -> QuerySet

  • offset(offset: int) -> QuerySet

  • Krijgen () - > Model

  • Het eerste () - > model

  • Query instellen Agent

    • QuerysetProxy.paginate(page: int) werkwijze
    • QuerysetProxy.limit(limit_count: int) werkwijze
    • QuerysetProxy.offset(offset: int) werkwijze

paging

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

Combineert offset- en limietmethoden op basis van paginanummer en grootte

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Klasse Track (ormar. Model):
    ormar _ config = ormar. OrmarConfig (
        Database = databanken. Database (DATABASE _ URL),
        Metadata = sqlalchemie. MetaData (),
        Tafelnaam = "track"
    )

    Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
    Album: Optioneel [Album] = ormar. ForeignKey (Album)
    Naam: str = ormar. String (max _ length = 100)
    Positie: int = ormar. Geheel ()


Tracks = afwachten Track.objects.paginate (3) .all ()
# geeft 20 tracks terug vanaf rij 41
# (met standaard paginagrootte van 20)

Houd er rekening mee dat paginaat (2) gelijk is aan offset (20) .limit (20).

beperking

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

U kunt de resultaten beperken tot het vereiste aantal bovenliggende modellen.

Om het werkelijke aantal databasequeryrijen te beperken in plaats van het mastermodel, gebruikt u de parametervlag limit\ _ raw\ _ sql en stelt u deze in op True.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Klasse Track (ormar. Model):
    Ormar. OrmarConfig (
        Database = databanken. Database (DATABASE _ URL),
        Metadata = sqlalchemie. MetaData (),
        Tafelnaam = "track"
    )

    Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
    Album: Optioneel [Album] = ormar. ForeignKey (Album)
    Naam: str = ormar. String (max _ length = 100)
    Positie: int = ormar. Geheel ()


Tracks = afwachten Track.objects.limit (1) .all ()
# zal slechts één nummer retourneren

!!!Merk op dat alle methoden die geen rijen retourneren expliciet een QuerySet-instantie retourneren, zodat u ze aan elkaar kunt koppelen

1
2
3
Dus operaties zoals `filter()`,`select_related()`,`limit()` en `offset()` etc. kunnen worden geketend.

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

verschoven

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

U kunt de resultaten ook compenseren met het vereiste aantal mastermodellen.

Om het werkelijke aantal databasequery-rijen van het mastermodel te compenseren, gebruikt u de parametervlag limit\ _ raw\ _ sql en stelt u deze in op True.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Klasse Track (ormar. Model):
    Ormar. OrmarConfig (
        Database = databanken. Database (DATABASE _ URL),
        Metadata = sqlalchemie. MetaData (),
        Tafelnaam = "track"
    )

    Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
    Album: Optioneel [Album] = ormar. ForeignKey (Album)
    Naam: str = ormar. String (max _ length = 100)
    Positie: int = ormar. Geheel ()


Tracks = afwachten Track.objects.offset (1) .limit (1) .all ()
# geeft slechts één track terug, maar deze keer de tweede

!!!Merk op dat alle methoden die geen rijen retourneren expliciet een QuerySet-instantie retourneren, zodat u ze aan elkaar kunt koppelen

1
2
3
Dus operaties zoals `filter()`,`select_related()`,`limit()` en `offset()` etc. kunnen worden geketend.

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

krijgen

Krijg (**kwargs) - > model

Haalt de eerste rij uit de database die voldoet aan de door kwargs ingestelde voorwaarden.

Als er geen voorwaarden zijn ingesteld, zal het de laatste rij gesorteerd op pk in db retourneren. (Filteren / uitsluiten kan ook niet worden gebruikt om voorwaarden in te stellen).

!!!Tip Ga voor meer informatie over get naar read / get

eerste

Het eerste () - > model

Haalt de eerste rij op in oplopende volgorde gesorteerd op primaire sleutelkolom uit de database.

!!!Lees voor meer informatie over het eerste bezoek eerst /

QuerysetProxy methode

Wanneer u rechtstreeks toegang krijgt tot de relevante ManyToMany-velden en ReverseForeignKey, wordt een lijst met gerelateerde modellen geretourneerd.

Maar het toont ook een subset van de QuerySet API, zodat u rechtstreeks vanuit het bovenliggende model kunt filteren, maken, gerelateerde modellen kunt selecteren, enz.

paging

De paging-functie is precies hetzelfde als hierboven, maar stelt u in staat om gerelateerde objecten uit het andere uiteinde van de relatie te pagineren.

Ga

beperking

Hetzelfde als de limietfunctie hierboven, maar u kunt gerelateerde objecten vanaf de andere kant van de relatie pagineren.

Ga

verschoven

De offsetfunctie is identiek aan die hierboven, maar stelt u in staat gerelateerde objecten vanaf de andere kant van de relatie te pagineren.

Ga