Я хочу иметь модель с вычисленными полями, которые я могу применить для сортировки. Например, допустим, что у меня есть следующая модель:
class Foo(models.Model):
A = models.IntegerField(..)
B = models.IntegerField(..)
C = models.ForeignKey(..)
Я хочу иметь поле D и E, которые вычисляются по следующим формулам:
- D = A - B
- E = A - X (где X - поле соответствующей записи модели C)
Реализация этого будет тривиальной, если мне не нужно применять сортировку; Я бы просто добавил свойства к классу модели. Тем не менее, мне нужно упорядочить по этим полям.
Решение состоит в том, чтобы извлекать все записи в память и выполнять сортировку там, которую я представляю в крайнем случае (это нарушит положение в отношении разбивки на страницы).
Есть ли способ достичь того, что я пытаюсь сделать? Любые рекомендации приветствуются.
РЕДАКТИРОВАТЬ: Денормализация - это не-go. Значение поля X изменяется очень часто, и многие записи Foo связаны с одной записью модели C. Обновление X потребует тысяч обновлений E.