我正在尝试按日期过滤查询集。
首先,我将数据按日期分组,没有问题。
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,
})
答案 0 :(得分:0)
如@Endre都指出,我的代码不正确。这是正确的代码(没有值)。
ultima_fecha_cargada = ultima_fecha_cargada.first()
然后按日期过滤。
inventario_producto = inventario_original.filter(fecha=ultima_fecha_cargada.fecha)
现在可以使用了。奇怪的是,在我能够看到使用ultima_fecha_cargada.first().values("fecha")
的结果之前,已经得到了期望的值,正确地打印了它,并且没有错误消息。
现在,在PC重新启动后,我开始收到错误消息,并且代码似乎表现为Endre Both所说的。