related - queryset object django



Django values_list vs values (2)

Dans Django, quelle est la différence entre les deux suivants:

Article.objects.values_list('comment_id', flat=True).distinct()

contre

Article.objects.values('comment_id').distinct()

Mon objectif est d'obtenir une liste d'identifiants de commentaires uniques sous chaque Article . J'ai lu la documentation (et en fait, j'ai utilisé les deux approches). Les résultats semblent manifestement similaires.

https://code.i-harness.com


valeurs()

Renvoie un QuerySet qui renvoie des dictionaries plutôt que des instances de modèle, lorsqu'il est utilisé comme itérable.

liste_valeurs ()

Retourne un QuerySet qui retourne une list of tuples - list of tuples , plutôt que des occurrences de modèle, lorsqu'il est utilisé comme itérable.

distinct()

distincts sont utilisés pour eliminate the duplicate éléments en eliminate the duplicate .

Exemple:

Article.objects.values_list('id', flat=True) # flat=True will remove the tuples and return the list   
[1, 2, 3, 4, 5, 6]

Article.objects.values('id')
[{'id':1}, {'id':2}, {'id':3}, {'id':4}, {'id':5}, {'id':6}]

La méthode values() renvoie un QuerySet contenant les dictionnaires:

<QuerySet [{'comment_id': 1}, {'comment_id': 2}]>

La méthode values_list() renvoie un QuerySet contenant des nuplets:

<QuerySet [(1,), (2,)]>

Si vous utilisez values_list() avec un seul champ, vous pouvez utiliser flat=True pour renvoyer un QuerySet de valeurs uniques au lieu de 1-tuples:

<QuerySet [1, 2]>




django-orm