Баг сортування в Джанго
Підчас організації сортування вибірки з бази даних зіткнувся з такою проблемою:
Рішення: Проводити розрахунки суми до подібного сортування, тоді проблема не з’являється.
метод Джанго values_list() не вміє працювати з екстра полями в таблиці.
Справа була так:
a.) Є функція виду, яка робить наступну вибірку:
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
Post a Comment