Query instellen Agent
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.
!!!Merk op dat de openbare QuerySet standaard is gefilterd om alleen modellen met betrekking tot het bovenliggende model te retourneren.
1 | |
!!!Merk op dat wanneer u toegang krijgt tot QuerySet API-methoden via QuerysetProxy, u geen objecteigenschappen hoeft te gebruiken zoals een normale query.
1 2 3 | |
!!!Waarschuwing Querying-gerelateerde modellen van ManyToMany wist de lijst met gerelateerde modellen die op het bovenliggende model zijn geladen:
1 2 3 4 5 6 7 8 9 | |
Gegevens uit database lezen
krijgen
Krijg (**kwargs): - > model
Om slechts één van de relevante modellen gefilterd op naam te verkrijgen, kunt u de methode get (**kwargs) gebruiken.
1 2 3 4 5 6 7 8 9 | |
Tip
Verwerven of creëren
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]
Pogingen om rijen te krijgen die aan de criteria voldoen, en als er een NoMatch-uitzondering wordt gegenereerd, wordt er een nieuwe rij gemaakt met de gegeven kwargs en\ _ defaults.
!!!Tip Lees meer in het querydocument get\ _ or\ _ create
allemaal
all(**kwargs) -> List[Optional["Model"]]
Gebruik de all () -methode om een lijst met gerelateerde modellen te verkrijgen.
Houd er rekening mee dat u querysets kunt filteren, relevant kunt selecteren, velden kunt uitsluiten, enzovoort, net als normale query 's.
1 2 3 4 5 6 7 | |
Tip
iteratie
iterate(**kwargs) -> AsyncGenerator["Model"]
Gebruik de iterate () -methode om gerelateerde modellen te herhalen.
Houd er rekening mee dat u querysets kunt filteren, relevant kunt selecteren, velden kunt uitsluiten, enzovoort, net als normale query 's.
1 2 3 | |
Tip
Gegevens invoegen / bijwerken in de database
creëren
Aanmaken (**kwargs): - > Model
Maak gerelateerde modellen rechtstreeks vanuit het bovenliggende model.
Gekoppelde tabellen en relationele ID 's in de database worden automatisch ingevuld.
1 2 3 4 | |
Tip
Voor veel-op-veel relaties, als u aanvullende velden declareert op het expliciet verstrekte pass-through-model, is er een extra mogelijkheid om parameters door te geven die zullen worden gebruikt om het pass-through-model te maken.
Gegeven een dergelijk monster:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
U kunt velden op model invullen in de create () aanroep op de volgende manieren:
1 2 3 4 5 6 7 | |
Verwerven of creëren
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]
Pogingen om rijen te verkrijgen die aan de criteria voldoen, en als er een NoMatch-uitzondering wordt gegenereerd, wordt er een nieuwe rij gemaakt met de gegeven kwargs.
!!!Tip Lees meer in het querydocument get\ _ or\ _ create
Bijwerken of aanmaken
update_or_create(**kwargs) -> Model
Werk het model bij of maak een nieuw model als er geen overeenkomst is in de database.
!!!Tip Lees meer in Query Documentatie update\ _ of\ _ create
bijwerken
update(**kwargs, each:bool = False) -> int
Werk het relevante model bij met de opgegeven zoekwoordparameters en retourneer het aantal bijgewerkte rijen.
Tip
Houd er rekening mee dat parameters met veldnamen en veldwoordenboeken ook kunnen worden geaccepteerd voor veel-op-veel relationele updates.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
In het bovenstaande voorbeeld kunt u de eigenschappen van de postcategorie bijwerken in de volgende aanroep:
1 2 3 | |
Filteren en sorteren
filter
filter(*args, **kwargs) -> QuerySet
Hiermee kunt u filteren op elk modelkenmerk / veld en instanties verkrijgen met filters over FK-relaties.
Tip
uitsluiten
exclude(*args, **kwargs) -> QuerySet
Het werkt exact hetzelfde als het filter, en alle modifiers (achtervoegsels) zijn hetzelfde, maar de niet-voorwaarde wordt geretourneerd.
Tip
Bestel basis
order_by(columns:Union[List, str]) -> QuerySet
Met order\ _ by () kunt u de resultaten in de database sorteren op de velden die u selecteert.
!!!Tip Lees meer in de query document volgorde\ _ door
Deelnemingen en subqueries
Selecteer relevant
select_related(related: Union[List, str]) -> QuerySet
Hiermee kunnen gerelateerde modellen vooraf worden opgehaald tijdens dezelfde query.
Bij het gebruik van select\ _ lated wordt altijd slechts één query uitgevoerd tegen de database, wat betekent dat een (soms complexe) join wordt gegenereerd en later geneste modellen worden verwerkt in Python.
!!!Tip Lees meer over select\ _ lated in het querydocument
prefetch correlatie
prefetch_related(related: Union[List, str]) -> QuerySet
Het is toegestaan om gerelateerde modellen vooraf op te halen tijdens query 's, maar in plaats van\ _ lated te selecteren, wordt elk volgend model opgehaald in een afzonderlijke databasequery.
Met prefetch\ _ lated voert elk model één query uit tegen de database, wat betekent dat u meerdere query 's achter elkaar zult uitvoeren.
!!!Tip Lees meer in het querydocument prefetch\ _ lated
Pagina 's en lijnen
paging
paginate(page: int, page_size: int = 20) -> QuerySet
Combineert offset- en limietmethoden op basis van paginanummer en grootte.
Tip
beperking
limit(limit_count: int) -> QuerySet
U kunt de resultaten beperken tot het vereiste aantal bovenliggende modellen.
Tip
verschoven
offset(offset: int) -> QuerySet
U kunt de resultaten compenseren met het vereiste aantal mastermodellen.
Tip
Selecteer een subset van kolommen
veld
fields(columns: Union[List, str, set, dict]) -> QuerySet
Met velden () kunt u een subset van modelkolommen kiezen om de gegevensbelasting te beperken.
Tip
uitsluitingsveld
exclude_fields(columns: Union[List, str, set, dict]) -> QuerySet
Met behalve\ _ fields () kunt u een subset van modelkolommen selecteren die u wilt uitsluiten om het laden van gegevens te beperken.
!!!Tip Meer informatie in de querydocumentatie behalve\ _ velden
aggregaat functie
graaf
count(distinct: bool = True) -> int
Retourneert het aantal rijen dat aan de gegeven criteria voldoet (d.w.z. filters en uitsluitingen toepassen).
Tip
bestaan
Bestaan () - > Booleaans
Retourneert een Booleaanse waarde om te bevestigen of er rijen zijn die aan de gegeven criteria voldoen (toegepast met filters en uitsluitingen).
Tip