Retour aux données originales
La méthode suivante vous permet d'exécuter une requête, mais au lieu de renvoyer un modèle ormar, elle renvoie un dictionnaire ou une liste de tuples.
-
values(fields = None, exclude_through = False) -> List[Dict] -
values_list(fields = None, exclude_through = False, flatten = False) -> List -
Query Set Agent pour
QuerysetProxy.values(fields = None, exclude_through = False)MéthodeQuerysetProxy.values_list(fields = None, exclude_through= False, flatten = False)Méthode
!!!danger Notez que les valeurs et les valeurs_list ignorent l'analyse des résultats dans le modèle ormar et donc la validation des résultats!
!!!Attention Notez que chaque entrée dans la liste des résultats est une réflexion un-à-un de la ligne de résultat de la requête. puisque les lignes ne sont pas analysées si vous avez une relation un-à-plusieurs ou plusieurs-à-plusieurs, les valeurs de colonne dupliquées apparaissent dans l'entrée de résultat si une ligne parente a plusieurs lignes associées.
Les valeurs
values(fields: Union[List, str, Set, Dict] = None, exclude_through: bool = False) -> List[Dict]
Renvoie une liste de dictionnaires représentant les valeurs des colonnes de la base de données.
Vous pouvez utiliser le paramètre fields pour sélectionner un sous-ensemble de champs qui accepte le même ensemble d'arguments que la méthode fields().
Notez que passer un champ à values(fields) est en fait un raccourci pour appeler fields(fields).values.
!!!Conseil Pour en savoir plus sur ce que vous pouvez passer à un champ et comment sélectionner un champ de modèle imbriqué, lisez la documentation sur la colonne de sélection
Vous pouvez limiter le nombre de lignes en fournissant des critères dans filter() et except(), mais notez que même si une seule ligne (ou aucune!) correspond à vos critères, vous retournerez une liste en réponse.
Exemples:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Accès au modèle postal:
1 2 3 4 5 6 | |
Pour sélectionner les modèles pertinents, utilisez select_lated ou prefetch_lated.
Remarquez comment les colonnes de modèle imbriquées sont préfixées depuis le chemin relationnel complet du modèle autonome (celui utilisé dans la requête).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Sélectionnez un utilisateur avec un rôle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
!!!Remarque Notez que la relation entre le rôle et l'utilisateur est plusieurs à plusieurs, vous pouvez donc également obtenir des colonnes de modèle par défaut.
Combinez les champs pertinents et les champs pour sélectionner seulement 3 champs.
Notez que nous excluons également les définitions par modèle, car par définition, chaque modèle inclus dans la connexion, mais sans aucune référence dans le champ, est supposé être entièrement sélectionné (tous les champs inclus).
!!!Notez que, contrairement aux autres méthodes d'ensemble de requêtes ici, vous pouvez exclure les modèles intermédiaires mais conserver les colonnes de fin, ce qui n'a aucun sens lorsque vous analysez les données brutes dans un modèle.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Si vous avez plusieurs modèles ManyToMany dans votre requête, vous devez exclure manuellement chaque modèle.
Pour éviter ce fardeau, ormar vous fournit le paramètre except_through=False. Si vous définissez cet indicateur sur True, tous les modèles sont complètement exclus.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Liste des valeurs
values_list(fields: Union[List, str, Set, Dict] = None, flatten: bool = False, exclude_through: bool = False) -> List
Renvoie une liste de tuples représentant les valeurs des colonnes de la base de données.
Vous pouvez utiliser le paramètre fields pour sélectionner un sous-ensemble de champs qui accepte le même ensemble d'arguments que la méthode fields().
Notez que passer un champ à values_list(fields) est en fait un raccourci pour appeler fields(fields).values_list().
!!!Conseil Pour en savoir plus sur ce que vous pouvez passer à un champ et comment sélectionner un champ de modèle imbriqué, lisez la documentation sur la colonne de sélection
Si vous ne sélectionnez qu 'une seule colonne/champ, vous pouvez passer flatten=True, ce qui renverra une liste de valeurs au lieu d'une liste de tuples d'éléments.
!!!Attention Si plusieurs champs (ou aucun, c'est-à-dire tous) sont sélectionnés, la définition de flatten=True lève une exception QueryDefinitionError.
Vous pouvez limiter le nombre de lignes en fournissant des critères dans filter() et except(), mais notez que même si une seule ligne (ou aucune!) correspond à vos critères, vous retournerez une liste en réponse.
Exemples:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Accès au modèle postal:
1 2 3 4 5 6 7 | |
Pour sélectionner les modèles pertinents, utilisez select_lated ou prefetch_lated.
Compliquons la relation et modifions le modèle de catégorie mentionné précédemment pour faire référence au modèle utilisateur.
1 2 3 4 5 6 7 8 | |
Créez maintenant des exemples de données avec des liens utilisateur.
1 2 3 4 5 6 | |
Combinez les champs pertinents et les champs pour sélectionner seulement 3 champs.
Notez que nous excluons également les définitions par modèle, car par définition, chaque modèle inclus dans la connexion, mais sans aucune référence dans le champ, est supposé être entièrement sélectionné (tous les champs inclus).
!!!Notez que, contrairement aux autres méthodes d'ensemble de requêtes ici, vous pouvez exclure les modèles intermédiaires mais conserver les colonnes de fin, ce qui n'a aucun sens lorsque vous analysez les données brutes dans un modèle.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Si vous avez plusieurs modèles ManyToMany dans votre requête, vous devez exclure manuellement chaque modèle.
Pour éviter ce fardeau, ormar vous fournit le paramètre except_through=False. Si vous définissez cet indicateur sur True, tous les modèles sont complètement exclus.
1 2 3 4 5 6 7 8 | |
Utilisez flatten pour obtenir une liste de valeurs.
1 2 3 4 5 6 | |
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.
Attention!!!Parce que l'utilisation de values et values_list ignore l'analyse et la validation du modèle, contrairement à toutes les autres méthodes de lecture dans querysetproxy, ces deux méthodes n'effacent pas le modèle en cours de chargement et n'écrasent pas le modèle en cours de chargement avec leurs propres résultats d'appel!
Les valeurs
Exactement comme la fonction valeur ci-dessus, mais vous permet d'obtenir des objets pertinents de l'autre côté de la relation.
!!!conseil Pour en savoir plus sur Querysetproxy, visitez la section Querysetproxy
Liste des valeurs
Exactement comme la fonction value_list ci-dessus, mais vous permet d'interroger ou de créer des objets associés de l'autre côté de la relation.
!!!conseil Pour en savoir plus sur Querysetproxy, visitez la section Querysetproxy