如何使用queryset结果过滤DJango ORM中的其他queryset?

2024-09-27 04:22:43 发布

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

我试图使用AJAX调用视图,但有一个问题。我有一个submit的令牌,调用Django视图的函数正在工作,我遵循了这个链接的所有说明:https://realpython.com/blog/python/django-and-ajax-form-submissions/,但是在控制台中我得到了以下错误:

500: DoesNotExist at /Buscar/Producto/
InventarioProducto matching query does not exist.

/Buscar/Producto/是连接到视图的URL,这是有效的,我认为这不是问题所在。在

导入模型后,我在Django shell中尝试了以下操作:

^{pr2}$

在shell中,如果我打印保存了查询集的变量,我可以看到结果,所以我不知道为什么这在视图上不起作用。在

9786071411532是MySQL数据库中存在的一个产品代码,它保存在一个名为codigo_producto的列中,它与producto模型中保存的字段同名,实际上是一个主键。在

解释模型: InventarioProducto有一个字段是Producto的foreigin键。InventarioProducto模型中的字段名为producto_codigo_producto,producto的主键称为codigo_producto。所以producto_codigo_producto是指codigo_producto。 模型Precio具有与模型InventarioProducto中使用的名称相同的外键,因此它们的工作方式相同。在

我还确保我请求的所有数据都真实存在。在

以下是视图:

def BuscarProducto(request):
    if request.method == 'POST':
        txt_codigo_producto = request.POST.get('id_codigo_producto')
        response_data = {}
        resp_producto=Producto.objects.filter(codigo_producto=txt_codigo_producto)
        resp_inventario=InventarioProducto.objects.get(producto_codigo_producto__in=resp_producto)
        resp_precio=Precio.objects.filter(producto_codigo_producto__in=resp_producto,estado_precio='1').order_by('-idprecio')[:1]
        response_data['result'] = 'Create post successful!'
        response_data['codigoproducto'] = resp_producto.codigoproducto
        response_data['lote'] = resp_inventario.idinventario_producto
        response_data['descripcion_producto'] = resp_producto.descripcion_producto
        response_data['precio'] = resp_precio.valor_precio

        return HttpResponse(
            json.dumps(response_data),
            content_type="application/json"
        )
    else:
        return HttpResponse(
            json.dumps({"nothing to see": "this isn't happening"}),
            content_type="application/json"
        )

Tags: django模型视图jsondataobjectsresponserequest
1条回答
网友
1楼 · 发布于 2024-09-27 04:22:43

我已将已解决的文本移到一个答案:

我改了这个:

resp_inventario=InventarioProducto.objects.get(producto_codigo_producto__in=resp_producto)

为此:

^{pr2}$

相关问题 更多 >

    热门问题