Можно создать дубликат:
django - ordering queryset by a calculated fieldДжанго QuerySet упорядоченность выражением
Как я могу использовать order_by как order_by ('FIELD1' * 'field2') Например у меня есть элементы с ценой перечисленные в разных валютах, поэтому для заказа предметов - я должен сделать конвертацию валюты.
class Currency(models.Model):
code = models.CharField(max_length=3, primary_key=True)
rateToUSD = models.DecimalField(max_digits=20,decimal_places=10)
class Item(models.Model):
priceRT = models.DecimalField(max_digits=15, decimal_places=2, default=0)
cur = models.ForeignKey(Currency)
Я хотел бы иметь что-то вроде:
Item.objects.all().order_by(F('priceRT')*F('cur__rateToUSD'))
Но, к сожалению, он не работает, я также faild с аннотирования. Как можно упорядочить заказ QuerySet по результату умножения полей 2 модели.
Спасибо! В моем случае решение выглядит так: Item.objects.filter (q & qDates) .extra (выберите = {'usdPrice': 'SELECT airsale_item.priceRT/toUSD FROM airsale_currency WHERE airsale_currency.code = airsale_item.cur_id'}). Order_by ('usdPrice') К сожалению, я не смог использовать результат одного дополнительного в следующем. как I.objects.extra ({'xx': ....}). Extra ({'yy': 'xx' * 2}) django (db на самом деле) поле throw xx отсутствует. В любом случае, моя проблема решена, спасибо – Andrew