Djangosum来自不同表的两个字段

时间:2016-10-05 17:30:15

标签: django

我使用下面的代码对不同表中的字段求和。但是,如果没有与table2中的table1_id匹配的记录,则django将返回None

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 个答案:

答案 0 :(得分:1)

使用Coalesce中的django.db.models.functions解决了我的问题

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