Он переводится в:
http://127.0.0.1:8000/api/products/?queryParams={"sort":[],"filters":[{"type":"simple","name":"code","text":"xxx"}],"global_search":"","per_page":10,"page":1}&page=1
Выглядит так, как будто вы все еще должны сериализовать эти аргументы в правильный формат вручную или отправить их в телеrequest, а не как параметр запроса.
Я не знаю безболезненного способа заставить DRF справиться с этим автоматически. Однако, поскольку значение queryParams является допустимым JSON, вы можете переопределить методы, которые вы хотите использовать в ModelViewSet. Эта страница описывает методы, которые вы можете переопределить. Чтобы поставить JSON в диктовку, вы можете сделать json.loads(request.query_params['queryParams'])
. С этого момента вы можете фильтровать и заказывать вручную с помощью ORM.
Или, конечно, вы можете превратить параметры запроса в «обычные» параметры запроса на стороне клиента. Это отличная библиотека, которая может помочь вам в этом: https://medialize.github.io/URI.js/.
Кроме того, обычно не рекомендуется разрешать пользователям делать заказы на любые поля. С продуктами это, вероятно, относительно низкий риск, но не делает это обычной практикой.