在Django中将两个字段相乘

Dav*_*542 1 python mysql django django-models django-orm

我有以下查询:

sales_for_date_for_provider.exclude(sales_or_return='R').values_list('royalty_price', 'conversion_to_usd'))
Run Code Online (Sandbox Code Playgroud)

查询中的royalty_price* 是否可以乘以* conversion_to_usd?还是我需要进行列表理解或深入研究原始SQL?

chr*_*ett 5

Django文档警告我们该extra()方法将很快被弃用。自从我在寻找类似问题时遇到了这个答案,我想我会使用Django的内置表达式(特别是F()对象)共享另一种方法。

在回答原始问题时,您可以通过以下方法实现所需的结果:

sales_for_date_for_provider.annotate(
    result=F('royalty_price') * F('conversion_to_usd'))
Run Code Online (Sandbox Code Playgroud)

从文档中:

通过将不同的字段与算术结合,可以使用F()在模型上创建动态字段:

这是文档中的另一个示例,进一步说明了其用法:

company = Company.objects.annotate(
    chairs_needed=F('num_employees') - F('num_chairs'))
Run Code Online (Sandbox Code Playgroud)