Keer terug naar de oorspronkelijke gegevensbron
Met de volgende methoden kunt u een query uitvoeren, maar in plaats van een ormatiemodel te retourneren, retourneert u een woordenboek of een lijst met tuples.
-
values(fields = None, exclude_through = False) -> List[Dict] -
values_list(fields = None, exclude_through = False, flatten = False) -> List -
Query instellen Agent
QuerysetProxy.values(fields = None, exclude_through = False)werkwijzeQuerysetProxy.values_list(fields = None, exclude_through= False, flatten = False)werkwijze
!!!danger Merk op dat waarden en waarden\ _ list het parseren van het resultaat overslaan naar een ormatiemodel en daarom de validatie van het resultaat overslaan!
!!!-waarschuwing, merk op dat elk item in de resultatenlijst een één-op-één-weergave is van de rij met queryresultaten. Omdat rijen niet worden geparseerd als u een één-op-veel of veel-op-veel-relatie heeft, worden dubbele kolomwaarden weergegeven in de resultatenitems als een bovenliggende rij meerdere gerelateerde rijen heeft.
waarden
values(fields: Union[List, str, Set, Dict] = None, exclude_through: bool = False) -> List[Dict]
Retourneert een woordenboeklijst met waarden die kolommen uit de database vertegenwoordigen.
U kunt de parameter velden gebruiken om een subset van velden te selecteren die dezelfde set parameters accepteert als de methode velden ().
Houd er rekening mee dat het doorgeven van een veld aan waarden (velden) eigenlijk een snelkoppeling is naar het aanroepen van velden (velden) .waarden ().
Lees
U kunt het aantal rijen beperken door voorwaarden op te geven in filter () en behalve (), maar houd er rekening mee dat zelfs als slechts één rij (of geen rij!) aan uw criteria voldoet, u een lijst als reactie zult retourneren.
Voorbeeld:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Toegang tot het postmodel:
1 2 3 4 5 6 | |
Als u tegelijkertijd verwante modellen wilt selecteren, gebruikt u select\ _ lated of prefetch\ _ lated.
Merk op hoe de geneste modelkolommen worden voorafgegaan door het volledige relationele pad van het autonome model (het model dat in de query wordt gebruikt).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Selecteer gebruikers met rollen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
!!!Merk op dat de relatie tussen rollen en gebruikers veel-op-veel is, dus u kunt standaard ook modelkolommen krijgen.
Combineer relevante velden en velden om slechts 3 velden te selecteren.
Houd er rekening mee dat we de definitie ook per model hebben uitgesloten, omdat per definitie wordt aangenomen dat elk model in de join, maar zonder verwijzingen in de velden, volledig is geselecteerd (inclusief alle velden).
!!!Merk op dat u, in tegenstelling tot de andere querysetbenaderingen hier, het tussenliggende model kunt uitsluiten, maar de achterliggende kolommen kunt behouden, wat geen zin heeft bij het ontleden van de oorspronkelijke gegevensbron in een model.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Als er meerdere ManyToMany-modellen in de query staan, moet u elk model handmatig uitsluiten.
Om deze belasting te vermijden, geeft ormar u de parameter behalve\ _ door = Onwaar. Als deze vlag is ingesteld op Waar, zijn alle modellen volledig uitgesloten.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
waarde lijst
values_list(fields: Union[List, str, Set, Dict] = None, flatten: bool = False, exclude_through: bool = False) -> List
Retourneert een lijst met tuples die de waarden van kolommen uit de database vertegenwoordigen.
U kunt de parameter velden gebruiken om een subset van velden te selecteren die dezelfde set parameters accepteert als de methode velden ().
Merk op dat het doorgeven van een veld aan waarden\ _ list (velden) eigenlijk een snelkoppeling is naar het aanroepen van velden (velden) .waarden\ _ list ().
Lees
Als u slechts één kolom / veld selecteert, kunt u flatten = True doorgeven, wat een lijst met waarden retourneert in plaats van een lijst met elementtuples.
!!!waarschuwt dat het instellen van flatten = True QueryDefinitionError uitzondering zal opleveren als meerdere (of geen, wat betekent dat alle) velden zijn geselecteerd.
U kunt het aantal rijen beperken door voorwaarden op te geven in filter () en behalve (), maar houd er rekening mee dat zelfs als slechts één rij (of geen rij!) aan uw criteria voldoet, u een lijst als reactie zult retourneren.
Voorbeeld:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Toegang tot het postmodel:
1 2 3 4 5 6 7 | |
Als u tegelijkertijd verwante modellen wilt selecteren, gebruikt u select\ _ lated of prefetch\ _ lated.
Laten we de relatie ingewikkelder maken en het eerder genoemde categoriemodel aanpassen om naar het gebruikersmodel te verwijzen.
1 2 3 4 5 6 7 8 | |
Maak nu voorbeeldgegevens met gebruikerslinks.
1 2 3 4 5 6 | |
Combineer relevante velden en velden om slechts 3 velden te selecteren.
Houd er rekening mee dat we de definitie ook per model hebben uitgesloten, omdat per definitie wordt aangenomen dat elk model in de join, maar zonder verwijzingen in de velden, volledig is geselecteerd (inclusief alle velden).
!!!Merk op dat u, in tegenstelling tot de andere querysetbenaderingen hier, het tussenliggende model kunt uitsluiten, maar de achterliggende kolommen kunt behouden, wat geen zin heeft bij het ontleden van de oorspronkelijke gegevensbron in een model.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Als er meerdere ManyToMany-modellen in de query staan, moet u elk model handmatig uitsluiten.
Om deze belasting te vermijden, geeft ormar u de parameter behalve\ _ door = Onwaar. Als deze vlag is ingesteld op Waar, zijn alle modellen volledig uitgesloten.
1 2 3 4 5 6 7 8 | |
Gebruik platten om een lijst met waarden te krijgen.
1 2 3 4 5 6 | |
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.
!!!-waarschuwing Omdat het gebruik van waarden en waarden\ _ list het parseren en valideren van modellen overslaat, wissen deze twee methoden het momenteel geladen gerelateerde model niet en overschrijven ze het momenteel geladen model niet met hun eigen oproepresultaten in vergelijking met alle andere leesmethoden in querysetproxy!
waarden
Hetzelfde als de waardefunctie hierboven, maar u kunt het gerelateerde object ophalen aan de andere kant van de relatie.
Ga
waarde lijst
Precies hetzelfde als de functie value\ _ list hierboven, maar u kunt gerelateerde objecten opvragen of maken vanaf het andere uiteinde van de relatie.
Ga