Django queryset到字符串

2024-09-29 17:21:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个查询集,通过执行:

chart_data = DetailChange.objects.extra(select={'day': 'date(captured_date)'})\
    .values('item_id__store_id__store_name', 'day')\
    .annotate(total_sale=Sum('amount_sold'))

我有这样一个查询集:

{'day': datetime.date(2019, 6, 24), 'item_id__store_id__store_name': 'Keyboard Pro', 'total_sale': 706.0}
{'day': datetime.date(2019, 6, 25), 'item_id__store_id__store_name': 'Keyboard Pro', 'total_sale': 18.0}
...

现在我要做的是得到一个字符串,它组合了其中的所有日期,用“,”分隔。比如:

"2019-6-24, 2019-6-25, 2019-6-26, ..."

有什么简单的方法可以完成吗?你知道吗


Tags: storenameiddatadatetimedateobjectschart
2条回答

您可以加入格式化日期字符串的iterable,如:

', '.join(item['day'].strftime('%Y-%-m-%-d') for item in chart_data)

因此,这里我们将格式化每个day对象,如下所示:

>>> dd.strftime('%Y-%-m-%-d')
'2019-6-24'

然后我们把它们连接在一起,用逗号和空格隔开(', ')。你知道吗

也就是说,如果您只对格式化日期感兴趣,那么首先添加额外的注释就没有多大意义了。你知道吗

您可以使用genexp和str.join以及,作为分隔符:

', '.join(str(item['day']) for item in chart_data)

str(datetime.date)datetime.date.__str__已经以%Y-%m-%d格式返回日期,因此您不需要执行任何额外的strftime工作。你知道吗

OTOH,如果您只需要day字段,那么不应该在values中包含item_id__store_id__store_name。你知道吗

相关问题 更多 >

    热门问题