Я пытаюсь отсортировать набор словарей, к которым я добавил некоторые вычисляемые значения.
Процесс:
class Inventario(models.Model):
codigo_kinemed = models.CharField(max_length=100)
existencias = models.IntegerField(help_text="Existencias ", blank=True, null=True)
valor_coste = models.IntegerField(help_text="Existencias ", blank=True, null=True)
valor_venta = models.IntegerField(help_text="Existencias ", blank=True, null=True)
fecha = models.DateField(help_text="Fecha de toma de datos", blank=True, null=True)
def __str__(self):
return str(self.codigo_kinemed)
Я получаю набор запросов из этого.
inventario_diferencia = Inventario.objects.filter(fecha=ultima_fecha_cargada.fecha).values()
Возвращает набор словарей.Затем я перебираю этот набор запросов и вычисляю несколько новых полей.
for este in inventario_diferencia:
este['stock_valor_venta'] = este['existencias'] * este['valor_venta']
Я могу напечатать это вычисленное поле без проблем в шаблоне.
{{ inventario_diferencia.stock_valor_venta }}
Порядок
Я хочу отсортировать этот набор запросов по новому добавленному мной stock_valor_venta
значению.
Когда я пытаюсь использовать обычный набор запросов
inventario_diferencia.order_by('stock_valor_venta')
, я получаю:
Невозможно разрешить ключевое слово diferencia_mes в поле.Возможные варианты: codigo_kinemed, existencias, fecha, id, valor_coste, valor_venta
Это исходные значения модели, поэтому нет возможности упорядочить по новому значению.Когда я пытаюсь отсортировать его как словарь
inventario_diferencia = sorted(inventario_diferencia, key=lambda t: t.diferencia_mes)
, я получаю
объект 'dict' не имеет атрибута 'diferencia_mes'
Документация
В Django doc https://docs.djangoproject.com/en/2.1/ref/models/querysets/#values говорится следующее:
values(*fields, **expressions) Returns a QuerySet that returns dictionaries, rather than model instances, when used as an iterable.
Моя проблема связана с «когда используется как повторяемая» частьзаявление?Как я могу сортировать такие наборы запросов по добавленным значениям?
Заранее спасибо!