Django - пользовательская фильтрация наборов запросов - PullRequest
0 голосов
/ 01 июня 2018

Я работаю над приложением, в котором конечные пользователи должны иметь возможность определять фильтры наборов запросов через интерфейс.Эти фильтры используются для выбора экземпляров модели для отправки в другой веб-сервис через определенные интервалы времени.Придуманный пример:

class Thing(models.Model):
    stuff = models.CharField()

Мне нужно, чтобы пользователи могли настраивать синхронизированную задачу, в которой будут выбраны только Thing s со значением test для поля stuff.

У меня в настоящее время есть работающий POC для этой функции, но он включает в себя много логики с ручным кодированием.

Учитывая, что у django такое богатое сообщество и экосистема, мне было интересно, упускаю ли я возможность сделатьэто проще.

Ждем ваших отзывов!

1 Ответ

0 голосов
/ 01 июня 2018

Если я правильно понимаю ваши требования:

  • Пользователь должен иметь возможность настроить фильтр, который определяет, какие Thing s должны быть выбраны - без каких-либо знаний в области программирования, только через GUI
  • Пользователь должен иметь возможность устанавливать синхронизированные задачи и указывать, какой веб-сервис предназначен и какой фильтр следует использовать для отправки соответствующих данных

Исходя из этого, я бы:

  • Использование https://github.com/modlinltd/django-advanced-filters
  • Создание модели / формы / представления для TimedTasks, которые содержат отношение к AdvancedFilter и спецификации веб-сервиса
  • Извлечение данныхчерез AdvancedFilter#query в панели задач, настройте и вызовите веб-сервис

Таким образом, пользователь может использовать страницу обзора Thing для создания своих фильтров данных и связывать их при создании.TimedTask вместе с настройкой веб-сервиса.

...