Django F表达式

需求说明:按产品、价格分组统计数据,采用Django ORM语句写法为: res = CtProductPrice.objects.filter(umark=0, mdate__contains=yearmonth ).values_list( 'product_id', 'price', ).annotate( productnum = Count('product_id') ,countprice = Count('price') ,sumnum = Sum('num') ,sumprice = Sum( F('price') * F('num'), output_field=DecimalField() ) ).values( 'productnum', 'countprice', 'sumnum', 'sumprice', 'product_id' )express

打印查询语句 print( res.query )查看语句是否符合SQL语法django

其中遇到错误:Expression contains mixed types. You must set output_field 解决办法:引入from django.db.models import Count, Sum, F, DecimalField,F表达式运算增长output_field类型 Sum( F('price') * F('num'), output_field=DecimalField() )ci

参考资料:https://docs.djangoproject.com/en/2.1/ref/models/expressions/get

相关文章
相关标签/搜索