2013년 12월 30일 월요일

Django __in query로 얻은 결과 정렬하기

예를 들어, device_ids = [10, 5, 26, 34, 55] 리스트에 있는 모든 device 목록을 얻은 후 이를 device_ids에 있는 id 순서대로 정렬하고자 한다면 다음과 같이 할 수 있습니다.

device_ids = [10, 5, 26, 34, 55
devices = list(Device.objects.filter(id__in=device_ids))
devices = sorted(devices, key=lambda d: device_ids.index(d.id))

데이터베이스에서 얻은 쿼리 결과는 device_ids에 있는 순서대로 반환되지 않습니다. 그러므로, 이를 list로 변환 후 sorted를 사용하여 정렬을 해주어야 합니다. 이때 정렬의 조건이 되는 key 값은 device_ids 리스트에 저장된 device id의 index로 합니다. 예를 들면, 10번 device id의 경우 index의 값은 0이므로 10번 디바이스가 반환되는 리스트의 가장 선두에 있게됩니다.

참고자료:

댓글 1개:

  1. bons casino injapan (bons) bonus codes
    bons casino bonus codes · 카지노 bons casino bonus codes · bons クイーンカジノ casino bonus codes · bons ボンズ カジノ casino bonus codes · bons casino bonus codes · bons casino bonus codes · bons casino bonus

    답글삭제