Как изменить порядок сортировки в пределах одного Django просмотра - PullRequest
0 голосов
/ 17 июня 2020

У меня есть django класс Equity, соответствующие части которого я скопировал ниже. В большинстве моих обзоров моделей меня устраивает порядок мета equity_name. Однако у меня также есть свойство weighted_strength, которое я хотел бы создать в виде списка, который просматривает список equitys, отсортированный по weighted_strength.

Обычно, если weighted_strength была обычной моделью поле, я мог бы использовать order_by() в моем представлении для сортировки по этому полю. Однако, поскольку это свойство, похоже, я не могу использовать order_by().

Если есть способ использовать order_by() или изменить метаупорядочение, чтобы я мог только один раз отсортировать его по weighted_strength Буду весьма признателен за это.

Некоторое время я искал в Интернете и нашел некоторую расплывчатую информацию, относящуюся к свойствам Django - Python, но ничего слишком полезного. Спасибо!

class Equity(models.Model):
  equity_name = models.CharField(max_length=255)
  class Meta:
      ordering = ['equity_name']


  @property
  def weighted_strength(self):
     weight = 0.50
     dataset1 = self.data_set1()
     dataset2 = self.data_set2()
     num_data = len(dataset1)
     if (num_data != 0):
        total = 0
        for i in range(num_data):
          total +=(weight**i)*(dataset1[i][0]-dataset2[i][0])
        total = total*(1-weight)/(1-weight**num_data)
        self._weighted_strength = total
        return self._weighted_strength
     else:
       self._weighted_strength = 0
       return self._weighted_strength
...