Django:从querys获取特定值

2024-03-29 13:58:40 发布

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

我正在努力获得每月的销售数据。我可以做计算,但是我不能只得到值而不是完整的查询集。你知道吗

我发现了不同的选择,有些在某些情况下可行,但在其他情况下不行。我猜对不同的查询集数据和字典也有一些误解。你知道吗

下面是我的例子。你知道吗

 for este in inventario_diferencia:
        este['stock_valor_venta'] = este['existencias'] * este['valor_venta']
        este['diferencia'] = inventario_original.filter(fecha=diferencia_fecha, codigo_kinemed=este['codigo_kinemed']).values()[0]['existencias'] - este['existencias']
        media_venta_mes = Ventas.objects.filter(prod_codigo=este['codigo_kinemed']).values("prod_codigo").annotate(media=Sum("uds")/Count(TruncMonth('fecha'), distinct=True))

如果打印media_venta_mes我得到正确的计算。例如:<QuerySet [{'prod_codigo': 'TP3 SHOULDER', 'media': 24}]>

然后我想把media值插入到通用inventario_diferencia字典中。你知道吗

如果我做media_venta_mes = media_venta_mes.values("media"),我会得到<QuerySet [{'media': 24}]>。你知道吗

如果我尝试media_venta_mes = media_venta_mes.get("media"),它在聚合中对我有效,我会得到too many values to unpack (expected 2)。你知道吗

如果我尝试media_venta_mes = media_venta_mes.media,我会得到'QuerySet' object has no attribute 'media'。你知道吗

我尝试了一些我现在无法记录的东西。我知道我在这里是个笨菜鸟,对不起,谢谢你的帮助。你知道吗

测试更新

我试着media_venta_mes[0].media得到'dict' object has no attribute 'media'。你知道吗

我尝试media_venta_mes['media']我得到TypeError。你知道吗

我尝试media_venta_mes.first().media我得到'dict' object has no attribute 'media'

如果我尝试

media_venta_mes = Ventas.objects.filter(prod_codigo=este['codigo_kinemed']).values("prod_codigo").annotate(media=Sum("uds")/Count(TruncMonth('fecha'), distinct=True)).first()

este['diferencia_mes'] = media_venta_mes.media

我得到'dict' object has no attribute 'media'

如果我尝试media_venta_mes.first()['media'],我会得到'NoneType' object is not subscriptable


Tags: noobjectattributeprodmediacodigoestehas
1条回答
网友
1楼 · 发布于 2024-03-29 13:58:40

我想你在找 media_venta_mes['media']media_venta_mes[0].media 但我不确定我是否完全理解这个问题。您可能也在寻找“第一”方便方法: https://docs.djangoproject.com/en/dev/ref/models/querysets/#first

基本上,您需要获取queryset的第一条记录,然后获取属性。你知道吗

在尝试将一个变量设置为另一个同名变量时要小心,即:media_venta_mes = media_venta_mes.media,因为这样会产生一些不希望的结果。你知道吗

[编辑]

基于你的错误,你能试着用 media_venta_mes[0]['media']media_venta_mes.first()['media'] 因为这是从字典中获取元素的典型方法。你知道吗

[编辑]

如果print(media_venta_mes.first())产生{'prod_codigo': 'TP3 SHOULDER', 'media': 24} 但是media_venta_mes.first()['media']产生'NoneType' object is not subscriptable我不知所措。你知道吗

相关问题 更多 >