2016-10-05 3 views
0

다른 테이블의 필드를 합산하기 위해 아래 코드를 사용합니다. 표 2 table1_id 일치에 대한 기록이 없다 그러나, 장고가 없음Djangosum 다른 테이블의 두 필드

Table 1 
id val 
1  2 
2  3 

Table 2 
id val table1_id 
1  5  1 

아래 쿼리는 반환하지 않을 것이다 반환

7 
None 

어떻게 반환 :

7 
3 

장고 쿼리를 :

SomeModel.objects.filter(
    some_filters 
).annotate(
    var=ExpressionWrapper(
     F('val') + F('table2__val'), output_field=FloatField() 
    ) 
) 

답변

1

Coalesce을 사용하여 django.db.models.functions에서 내 문제를 해결했습니다.

SomeModel.objects.filter(
    some_filters 
).annotate(
    var=ExpressionWrapper(
     F('val') + Coalesce(F('table2__val'), 0), output_field=FloatField() 
    ) 
) 
관련 문제