2016-10-05 3 views
0

Я использую следующий код, чтобы суммировать поля в разных таблицах. Однако, когда нет никаких записей, что соответствует table1_id в table2, Джанго возвращает NoneDjangosum два поля из разных таблиц

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() 
    ) 
) 
Смежные вопросы