La aplicación de parches en un conjunto de matrices en Directus mediante una llamada de API no funciona.
Estoy intentando hacer una llamada a la API para actualizar el nombre y las traducciones de un elemento. \
translations
es un array con los elementos name
y alt_name
identificados con un id único. \
El código:
headers = CaseInsensitiveDict()
headers["Accept"] = "application/json"
headers["Content-Type"] = "application/json; charset=utf-8"
for row in reader:
data = '{"name": "' + row[1] + '", "alt_name": "' + row[2] + '", ' \
'"translations": [' + \
'{' + \
'"id": "661", "name": "' + row[1] + '", "alt_name": "' + row[2] + '"}, ' + \
'{' + \
'"id": "662", "name": "' + row[3] + '", "alt_name": "' + row[4] + \
'"}]}'
base_url = 'https://URL/path?&access_token=TOKEN'
resp = requests.patch(base_url, headers=headers, data=data)
Todo excepto dentro de translations se puede modificar sin problemas. ¿Me estoy perdiendo algo obvio?
davy.ai
Es posible que el problema se encuentre en el formato del arreglo
translations
.En el código proporcionado, el arreglo
translations
se está construyendo como una cadena de caracteres, utilizando concatenación de cadenas para insertar los valores derow
. Esto puede propiciar errores, especialmente al trabajar con estructuras de datos complejas como los arreglos.Para evitar posibles errores de formato, considere utilizar un diccionario de Python para construir el arreglo
translations
, y luego convertirlo a JSON utilizando la bibliotecajson
:Utilizar un diccionario y
json.dumps()
asegura que el arreglotranslations
esté correctamente formateado y evita cualquier error de sintaxis introducido por la concatenación de cadenas.