code

Django 모델-고유 한 값 목록 가져 오기

codestyles 2021. 1. 11. 08:16
반응형

Django 모델-고유 한 값 목록 가져 오기


고유 한 외래 키 목록을 얻으려고 노력하고 다음과 같이 썼습니다.

my_ids = Entity.objects.values('foreign_key').distinct()

그러나 나는 UNDISTINCT 외래 키 목록을 얻습니다. 무엇을 놓치고 있습니까?

감사!


그게 힌트입니다! 두 솔루션 모두 100 % 작동하지 않습니다 ...하지만 저는 그것들을 결합했습니다 :)

고유 한 인수를 전달하는 것은 MySQL 데이터베이스 (afaik)에서 작동하지 않습니다.

이것은 작동하고 하나의 객체 만 반환합니다.

Entity.objects.order_by('foreign_key').values('foreign_key').distinct()

어쨌든 감사합니다 :)


아마도 이것과 함께 가고 싶을 것입니다.

Entity.objects.order_by().values_list('foreign_key', flat=True).distinct()

Entity.objects.values_list('foreign_key', flat=True).distinct().order_by()

밖으로 순서대로 작동하지 않는 구별

order_by () 호출에 사용 된 모든 필드는 SQL SELECT 열에 포함됩니다. 이로 인해 distinct ()와 함께 사용하면 예기치 않은 결과가 발생할 수 있습니다. 관련 모델의 필드를 기준으로 정렬하면 해당 필드가 선택한 열에 추가되고 그렇지 않으면 중복 행이 구별되는 것처럼 보일 수 있습니다. 추가 열은 반환 된 결과에 표시되지 않기 때문에 (순서 지정을 지원하기 위해 존재하는 경우 만 있음), 때때로 구별되지 않는 결과가 반환되는 것처럼 보입니다.

마찬가지로 values ​​() 쿼리를 사용하여 선택한 열을 제한하는 경우 order_by () (또는 기본 모델 순서 지정)에 사용 된 열이 계속 관련되며 결과의 고유성에 영향을 미칠 수 있습니다.

여기서 교훈은 distinct ()를 사용하는 경우 관련 모델별로 정렬 할 때주의해야한다는 것입니다. 마찬가지로, distinct () 및 values ​​()를 함께 사용할 때는 values ​​() 호출이 아닌 필드로 정렬 할 때주의해야합니다.

https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct


Entity.objects.order_by('foreign_key').distinct('foreign_key')

이미 목록으로있는 경우이를 a로 변환 set()하여 고유 한 값을 얻습니다.

참조 URL : https://stackoverflow.com/questions/10848809/django-model-get-distinct-value-list

반응형