У меня есть модель, которая выглядит примерно так:
class Person(models.Model):
data = JSONField()
Поле data
имеет 2 свойства: name
и age
. Теперь предположим, что я хочу получить набор запросов с разбивкой на страницы (каждая страница содержит 20 человек) с фильтром, где age
больше 25, и набор запросов должен быть упорядочен в порядке убывания. В обычной настройке, то есть в нормализованной базе данных, я могу написать этот запрос так:
person_list_page_1 = Person.objects.filter(age > 25).order_by('-age')[:20]
Теперь, какова эквивалентность вышеизложенного при фильтрации и упорядочении с использованием ключей, хранящихся в JSONField? Я исследовал это, и кажется, что это должно было быть функцией для 2.1, но я не могу найти ничего подходящего.
Ссылка на тикет о реализации в будущем
У меня также есть еще один вопрос. Допустим, мы фильтруем и упорядочиваем с помощью JSONField. Должен ли ORM в таком случае получать все объекты, фильтровать и упорядочивать их перед отправкой первых 20? То есть будет ли производительность законно медленнее?
Очевидно, я знаю, что нормализованная база данных намного лучше подходит для таких вещей, но у меня немного связаны руки.
.order_by('-data__age')
? - person Antoine Pinsard   schedule 08.10.2018