Shopify Проблема с очисткой метаполей: ошибка «Значение не может быть пустым», несмотря на явное задание значения «»Python

Программы на Python
Ответить
Anonymous
 Shopify Проблема с очисткой метаполей: ошибка «Значение не может быть пустым», несмотря на явное задание значения «»

Сообщение Anonymous »

Проблема
У меня возникла проблема при попытке очистить (удалить) метаполя с помощью API администратора Shopify GraphQL (версия 2025-04). Моя цель — удалить метаполе, чтобы после импорта метаполе не существовало для этого продукта. Согласно рекомендациям Shopify, если значение метаполя пусто, его следует удалить (а не просто установить пустую строку).
Код на Python
Я реализовал следующий подход в Python, используя библиотеку запросов для выполнения вызова GraphQL (вместе с сторожевым таймером для отслеживания изменений локальных файлов). Для метаполей, которые должны быть очищены, я явно устанавливаю в поле значения пустую строку ("") и выполняю мутацию, предназначенную для их очистки:

Код: Выделить всё

if clear_fields:
query_clear = """
mutation ClearMetafields($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
metafields {
key
namespace
value
updatedAt
}
userErrors {
field
message
}
}
}
"""
Полезные данные GraphQL
Мои полезные данные для метаполей, которые я хочу очистить, выглядят следующим образом:

Код: Выделить всё

  "metafields": [
{
"ownerId": "gid://shopify/Product/9722952974604",
"namespace": "custom",
"key": "data_spedito_da",
"value": "",
"type": "single_line_text_field"
},
{
"ownerId": "gid://shopify/Product/9722952974604",
"namespace": "custom",
"key": "data_venduto_da",
"value": "",
"type": "single_line_text_field"
}
// ... additional fields ...
]
}
Ответ об ошибке
Вместо удаления метаполя API отвечает ошибкой, например:

Код: Выделить всё

[{
'field': ['metafields', '0', 'value'],
'message': "Value can't be blank."
}, ...]
Я проверил, что полезные данные отправляются точно так, как показано (выходные данные журнала подтверждают, что поле значения присутствует и имеет значение ""), но ошибка сохраняется.
Подробнее
Версия API:
  • 2025-04
Используемые библиотеки:
  • Библиотека запросов Python для HTTP-вызовов и сторожевой таймер для мониторинга файлов.
Ожидаемое поведение
Если значение метаполя при импорте CSV пусто, то это метаполе следует удалить. Мутация должна удалить метаполе (или, по крайней мере, привести к его отсутствию), а не оставить пустое значение.
Вопрос
  • Как я могу этого добиться?
  • Существует ли рекомендуемый подход или необходимая модификация полезных данных, которая позволяет мне обновить метаполе так, чтобы его значение стало пустым (очищенным) без полного удаления записи метаполя?
По существу:
  • Как передать значение, которое делает метаполе пустым, чтобы моя тема автоматически скрывала пустые значения, не вызывая при этом ошибку «Значение не может быть пустым»?


Подробнее здесь: https://stackoverflow.com/questions/795 ... e-explicit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»