如何根据 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()
)

或者在之前,你先注释然后.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>)