如何根据 Django 中的其他模型计算的值进行排序?
How to order by a value calculated based on some other model in Django?
例如:
模特公司有字段:company_name 和 stock_price
模型产品有字段:product_price 和 company_name
我想做这样的事情:Company.objects.order_by( stock_price / [除以] Products.objects.filter(company_name = Company__companyName).aggregate(Sum ('product_price')).get('product_price__sum'))
本质上,我想要做的是将 X 公司的股票价格除以 X 公司产品的 product_price 总和,并使用所得计算来订购公司的所有对象。其中 company_name 是外键。
我只是想知道在 Django 中是否可以做这样的事情。谢谢!
您可以按以下方式对公司进行排序:
from django.db.models import F, Sum
Company.objects.order_by(
(<b>F('stock_price')</b>/<b>Sum('products__product_price')</b>).asc()
)
或者在django-2.2之前,你先注释然后.order_by(…)
:
from django.db.models import F, Sum
Company.objects.annotate(
<b>order=F('stock_price')/Sum('products__product_price')</b>
).order_by(<b>'order'</b>)
例如:
模特公司有字段:company_name 和 stock_price
模型产品有字段:product_price 和 company_name
我想做这样的事情:Company.objects.order_by( stock_price / [除以] Products.objects.filter(company_name = Company__companyName).aggregate(Sum ('product_price')).get('product_price__sum'))
本质上,我想要做的是将 X 公司的股票价格除以 X 公司产品的 product_price 总和,并使用所得计算来订购公司的所有对象。其中 company_name 是外键。
我只是想知道在 Django 中是否可以做这样的事情。谢谢!
您可以按以下方式对公司进行排序:
from django.db.models import F, Sum
Company.objects.order_by(
(<b>F('stock_price')</b>/<b>Sum('products__product_price')</b>).asc()
)
或者在django-2.2之前,你先注释然后.order_by(…)
:
from django.db.models import F, Sum
Company.objects.annotate(
<b>order=F('stock_price')/Sum('products__product_price')</b>
).order_by(<b>'order'</b>)