Баг сортування в Джанго

Підчас організації сортування вибірки з бази даних зіткнувся з такою проблемою:
метод Джанго values_list() не вміє працювати з екстра полями в таблиці.
Справа була так:
a.) Є функція виду, яка робить наступну вибірку:

entities = SomeModel.objects.select_related("another_model",).extra(SELECT={some_field: "SELECT * FROM ...."})
b.) Тепер після вибірки ми відсортуємо об’єкт запиту по полю отриманому через екстра:

entities = entities.extra(order_by=['some_field'])
c.) Далі припустимо, що нам треба получити суму по певному полю у вибірці. Для цього як найкраще підходить метод values_list(). Метод отримує як аргумент потрібні програмісту поля і виводить їх значення як список, тому:
total = sum(values_list('field_1', flat=True ))
Та ось тут і криється проблема, метод не вміє працювати з сортовоними по зовнішньому полю, об’єктами вибірки.
Рішення: Проводити розрахунки суми до подібного сортування, тоді проблема не з’являється.

Comments

Popular posts from this blog

Install Kubeflow locally

RabbitMQ and OpenShift