Lo que estoy tratando de hacer es iterar. Tengo esta línea de código en una columna en una tabla en mi base de datos:
[{u"item": 5, u"quantity": 2},{u"item": 6, u"quantity": 1}]asigno esto a un orden variable, así que tengo:
order = [{u"item": 5, u"quantity": 2},{u"item": 6, u"quantity": 1}]entonces quiero iterarlo. Estoy intentando lo siguiente:
for o in order.items(): product = o['item'] ...no funciona ¿Cómo puedo convertirlo?
for order in orders: ord = order.shopping_cart_details # [{u"item": 5, u"quantity": 2},{u"item": 6, u"quantity": 1}] temp = {'order_id': order.id, 'movies': ord['item'], 'created': order.created} full_results.append(temp)obtengo índices de cadenas que deben ser números enteros
¿Podría verificar el tipo de datos de retorno después de recuperar los datos de la base de datos para el siguiente código:
[{u"item": 5, u"quantity": 2},{u"item": 6, u"quantity": 1}] Use type(order) para determinar el tipo del valor de retorno. Puede ser que los datos devueltos para los datos anteriores estén en formato de cadena. En este caso, cuando almacene la lista en la base de datos, puede considerar usar json.dumps() para convertir los datos primero y luego, cuando recupere los datos, puede usar json.loads() para recuperar el tipo de datos original. . En este caso, puede considerar cambiar el tipo de columna de la base de datos a blob .
Supongamos que el orden es una cadena
order = '[{"item": 5, "quantity": 2},{"item": 6, "quantity": 1}]' def doSomething(): import json ord = json.loads(order) values =[ v['item'] for v in ord] # if u want a single item u put values = v.pop()['item']O para hacerlo más simple, puede usar la función eval .
order = '[{u"item": 5, u"quantity": 2},{u"item": 6, u"quantity": 1}]' order = eval(order) for o in order: product = o['item'] print product