없음 특별 대우 :장고 ORM : 주문 집계 함수/w -이 쿼리하고있어
SomeObject.objects.annotate(something=Avg('something')).order_by(something).all()
나는 일반적으로 내가 동기화 유지하기 위해 장고 신호를 사용하여 내 모델의 집계 필드가를, 그러나 이 경우 perfomance는 문제가 아니므로 간단하게 유지하고 하위 쿼리 만 사용한다고 생각했습니다.
그러나이 방법을 사용하면 예기치 않은 문제가 발생합니다. 일부 None
년대에 혼합 할 경우
[5.0, 4.0, 6.0 … (etc, just numbers)]
그러나이 같은 주문보다 :
[None, 5.0, 4.0 …]
문제가 없음이 더 높은 가치가없는 것으로 집계 함수의 결과가 같은 경우 그것은 모든 위대한 작품 0보다 큰 값을 가져야합니다.
저는 PostgreSQL을 사용 중이며 다른 DB를 테스트하지 않았습니다. 단지 그것을 할 수있는 방법이 있는지
sorted(…, key=lambda _:_.avg_rating if _.avg_rating is not None else 0)
그래서 난 그냥 궁금 : 사실 난 그냥 메모리에 정렬하여 주위 근무 등
생성 어떤 쿼리를 확인하지 않은 장고 ORM? 아마도 .where
일까요? 또는 다른 것?