Hola, estoy escribiendo una aplicación de Django que informa sobre los artículos comprados diariamente. Quiero organizar los datos en una estructura de diccionario así...
monthly_items = { "Apr-27" : [ list of objects purchased on April-27th ] "Apr-26" : [ list of objects purchased on April-26th ] "Apr-25" : [ list of objects purchased on April-25th ] "Apr-24" : [ list of objects purchased on April-24th ] ... "Mar-27" : [ list of objects purchased on March-27th ] }en este momento, mi código se ve así (start_date y end_date están configurados para el mes pasado y hoy, respectivamente):
month_dict = { 1: 'Jan', 2: 'Feb', 3: 'Mar', 4: 'Apr', 5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec', } from collections import OrderedDict monthly_items = OrderedDict() # pull items from last 30 days items = Item.objects.filter(create_date__gte=start_date, create_date__lt=end_date).order_by('-create_date') for item in items: day = str(month_dict.get(item.create_date.month)) + '-' + str(item.create_date.day) day_items = monthly_items.get(day, []) day_items.append(item)esto funciona muy bien, y obtengo la estructura de diccionario que quiero, pero mi problema es que si no hay artículos comprados el 24 de abril, no habrá ninguna clave en el diccionario, y cuando imprimo mi dict en html, me falta una columna del 24 de abril cuando en realidad quiero una pero con una lista vacía. ¿Hay alguna manera de completar previamente un dictado ordenado con los 30 días más recientes como claves (con compatibilidad con meses cruzados)?