Получить заказ WooCommerce с определенным статусом с помощью Python

#python #woocommerce #woocommerce-rest-api

#python #woocommerce #woocommerce-rest-api

Вопрос:

Я работаю над интерфейсом для обмена данными между нашей OMS и WooCommerce, используя оболочку Python WooCommere API, и у меня возникают проблемы с получением заказов на основе статуса. Я могу получить все заказы, подобные этому

 tmp_orders = DIVISION_API.get('orders')
  

но я пытаюсь получать только заказы со статусом «обработка». Основываясь на документации API и результатах json из данных заказа, которые я получаю с помощью вышеупомянутого вызова, похоже, что я должен быть в состоянии вызвать

 tmp_orders = DIVISION_API.get('orders', status='processing')
  

и получать только те заказы, которые находятся в состоянии обработки, но когда я пытаюсь это сделать, я получаю ошибку TypeError: request() got an unexpected keyword argument 'status' .

Я искал надежные примеры, используя Python, но не могу найти никакого решения. Любые предложения были бы фантастическими.

Спасибо.

Комментарии:

1. Документ здесь — woocommerce.github.io/woocommerce-rest-api-docs /…

2. @mujuonly Это документация, с которой я работал, но я не могу найти ни одного примера того, как получать заказы на основе статуса. Это достаточно легко получить по идентификатору .get('orders/<id>') , но я ничего не могу найти о статусе. Кажется странным отсутствие каких-либо примеров фильтрации на основе чего-либо, кроме ID.

Ответ №1:

Думаю, мне удалось с этим разобраться. Потратив довольно много времени на поиск, метод проб и ошибок, это выглядит как работоспособное решение.

 orders = api_obj.get('orders', params={'per_page': 10, 'status': 'processing', 'page': 1})
  

Похоже, что вы можете передать dict ряд параметров (как params ), и они будут переданы базовому запросу. Я не знаю, действительно ли разработчик API-оболочки предполагал использовать его именно таким образом, но он работает надежно. Надеюсь, это поможет кому-то еще.

Ответ №2:

Не знаком с этим API, но из того, что указано в документации, вы должны выполнить .get('orders') , использовать .json() в ответе, чтобы получить информацию в json формате, а затем вы можете искать заказы, ключ которых status равен processing .

Комментарии:

1. На самом деле это то, что я делал на этапе тестирования, но я надеялся, что есть способ получше. Я мог видеть, что этот метод становится все дороже по мере увеличения количества заказов. Большинство оболочек Python API поддерживают передачу аргументов в запрос в виде kwargs, которые анализируются и используются для фильтрации вызова REST. Это также было бы полезно для разбивки на страницы и т.д. Однако я ценю ваше предложение!