developer tip

장고 values_list 대 값

optionbox 2020. 8. 16. 20:11
반응형

장고 values_list 대 값


Django에서 다음 두 가지의 차이점은 무엇입니까?

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

vs

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

내 목표는 각각의 고유 한 댓글 ID 목록을 가져 오는 것입니다 Article. 문서를 읽었으며 실제로 두 가지 접근 방식을 모두 사용했습니다. 결과는 분명히 비슷해 보입니다.


values()메서드는 사전이 포함 된 QuerySet을 반환합니다.

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

values_list()메서드는 튜플이 포함 된 QuerySet을 반환합니다.

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

당신이 사용하는 경우 values_list()하나의 필드로, 당신이 사용할 수있는 flat=True대신에 1 튜플의 단일 값의 검색어 세트를 반환 :

<QuerySet [1, 2]>

값 ()

dictionariesiterable로 사용될 때 모델 인스턴스 가 아닌를 반환하는 QuerySet을 반환합니다 .

values_list ()

list of tuplesiterable로 사용될 때 모델 인스턴스 가 아닌를 반환하는 QuerySet을 반환합니다 .

뚜렷한()

구별은 eliminate the duplicate요소 에 사용됩니다 .

예:

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}]

다음을 사용하여 다른 값을 얻을 수 있습니다.

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

참고 URL : https://stackoverflow.com/questions/37205793/django-values-list-vs-values

반응형