2014-12-18 3 views
0

저는 장고를 처음 접하는 프런트 엔드 개발자입니다. 우리 포스트 그레스 DB에는 (1,2)의 값을 가진 특정 열 (server_reach)이 있습니다. 하지만 필터링 된 행 중 적어도 하나에 도달 가능한 값 (1 = 도달 할 수 없음, 2 = 도달 가능)이있는 행이 있는지 알려주는 쿼리를 작성해야합니다.Django에서 주석을 추가하는 동안 개별 값을 합산하려면 어떻게 변경합니까?

나는 처음있는 내가 쓴 칼럼의 값이 될 것이라고 (0,1)을 기반으로 들었다 :

ServerAgent.objects.values('server').filter(
    app_uuid_url=app.uuid_url, 
    trash=False 
).annotate(serverreach=Sum('server_reach')) 

논리 내가 필터링 된 모든 행을 가져오고 그들을 주석 것을 간단하다 server_reaches의 합계. 이것이 0보다 크면 적어도 하나의 항목이 0이 아닙니다.

그러나 실제 DB에는 값 (1,2)이 있습니다. 그리고이 논리는 더 이상 작동하지 않습니다. 요약하기 전에 각 행의 server_reach를 '1'만큼 뺍니다. 다음과 같이 F 식을 시도했습니다

ServerAgent.objects.values('server').filter(
    app_uuid_url=app.uuid_url, 
    trash=False 
).annotate(serverreach=Sum(F('server_reach')-1)) 

그러나 다음과 같은 오류가 발생합니다. 이 일을하도록 도와주세요.

AttributeError: 'ExpressionNode' object has no attribute 'split' 

답변

0

사용 Avg 대신 Sum. 평균값이 1보다 크면 적어도 하나의 행에 2의 값이 포함됩니다.

+0

감사합니다. 그게 꽤 창의적이지. 그걸 전혀 생각하지 않았어. 하나의 다른 메모, F식이 작동하지 않습니다. 그것에 관한 어떤 생각? – Aditya