2016-10-05 17 views
0

以下のコードを使用して、異なるテーブルのフィールドを合計します。表2にtable1_idに一致するレコードがありませんただし、DjangoはなしDjangosum異なるテーブルの2つのフィールド

Table 1 
id val 
1  2 
2  3 

Table 2 
id val table1_id 
1  5  1 

を返さない以下のクエリは返します:

7 
None 

は、どのように私は戻ってくる:

7 
3 

Djangoのクエリ:

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() 
    ) 
) 
関連する問題