社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

django:按日期筛选查询集根本不应用任何筛选器

Francisco Ghelfi • 4 年前 • 132 次点击  

我试图按日期筛选查询集。

首先,我按日期对数据进行分组,没有问题。

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'))

我得到完整的查询集,没有应用过滤器。如果我打印出结果日期 [2019年3月15日] 所以日期格式匹配。

也试过了

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,
    })
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38223
 
132 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Francisco Ghelfi
Reply   •   1 楼
Francisco Ghelfi    5 年前

正如@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所说的那样。