Django:按日期筛选查询集不应用任何fi

2024-04-27 03:44:19 发布

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

我正在尝试按日期筛选查询集。你知道吗

首先,我将数据按日期分组,没有问题。你知道吗

inventario_original = Inventario.objects.all()
inventario = inventario_original.values("fecha").annotate(
    valor_coste=Sum(F('existencias') * F('valor_coste')),
    valor_venta=Sum(F('existencias') * F('valor_venta')),
    existencias=Sum('existencias'))

然后我在查询集中找到最后一个日期。你知道吗

ultima_fecha_cargada = inventario_original.order_by('-fecha')
ultima_fecha_cargada = ultima_fecha_cargada.first().values('fecha')

如果我打印ultima_fecha_cargada.fecha,我得到['15-03-2019']

最后,我想用最后一个日期过滤查询集。你知道吗

inventario_producto = inventario_original.filter(fecha__date=ultima_fecha_cargada.fecha).values("codigo_kinemed").annotate(existencias=Sum('existencias'))

我得到完整的查询集,没有应用任何筛选器。如果我打印结果日期,我会得到['15-03-2019'],这样日期格式就匹配了。你知道吗

也试过了

filter(fecha=ultima_fecha_cargada.fecha)
filter(fecha=ultima_fecha_cargada)
filter(fecha=date(day=15, month=3, year=2019))
filter(fecha__contains=ultima_fecha_cargada.fecha)
filter(fecha__contains=date(day=15, month=3, year=2019)

此处显示完整视图代码

def InventarioView(request):
    inventario_original = Inventario.objects.all()
    ultima_fecha_cargada = inventario_original.order_by('-fecha')
    ultima_fecha_cargada = ultima_fecha_cargada.first().values('fecha')

    inventario = inventario_original.values("fecha").annotate(
        valor_coste=Sum(F('existencias') * F('valor_coste')),
        valor_venta=Sum(F('existencias') * F('valor_venta')),
        existencias=Sum('existencias'))

    inventario_producto = inventario_original.filter(fecha__date=ultima_fecha_cargada).values("codigo_kinemed").annotate(
        existencias=Sum('existencias'))

    return render(request, 'catalog/inventario.html', {
        'ultima_fecha_cargada': ultima_fecha_cargada,
        'inventario_producto': inventario_producto,
        'inventario': inventario,
    })

Tags: datefiltervalorvaluessumoriginalannotateproducto
1条回答
网友
1楼 · 发布于 2024-04-27 03:44:19

正如@Endre所说,我的代码是不对的。这是正确的代码(没有值)。你知道吗

ultima_fecha_cargada = ultima_fecha_cargada.first() 

然后按日期筛选。你知道吗

inventario_producto = inventario_original.filter(fecha=ultima_fecha_cargada.fecha)

现在起作用了。奇怪的是,在我能够看到使用ultima_fecha_cargada.first().values("fecha")的结果之前,我得到了预期的值,正确地打印出来,并且没有错误消息。你知道吗

现在,在电脑重启后,我开始收到错误信息,代码的行为似乎与Endre所说的一样。你知道吗

相关问题 更多 >