Как упорядочить Queryset по атрибуту EAV в Django с помощью django-filters?

Я работаю над проектом Django, в котором я использую модель EAV (Entity-Attribute-Value) для хранения динамических атрибутов для модели Product. Мне нужно позволить пользователям фильтровать и заказывать товары по цене, которая хранится как атрибут EAV (slug='price').

Моя установка: Я использую django-filters для фильтрации. Цена хранится в модели Value (часть Django EAV). Я использую аннотацию Subquery для получения цены из Value. Упорядочивание по цене работает некорректно.

Мне нужно сделать order_by price

В вашем коде bcz требуется внести несколько исправлений

  1. модель Value хранит атрибуты в value_float, value_int, value_text и т.д., Поэтому, пожалуйста, убедитесь, что цена хранится в value_float, иначе аннотация может работать не так, как ожидалось.

  2. в аннотации к Subquery убедитесь, что price указано правильно, прежде чем заказывать

  3. в OrderingFilter убедитесь, что цена указана до заказа набора запросов.

Вернуться на верх