2016-07-20 4 views
0

Ich versuche, eine Ansicht mit AJAX aufzurufen, aber ich habe ein Problem. Ich habe einen Token für die einreichen, die Funktion, die im Hinblick auf Django nennt funktioniert, ich alle Anweisungen zu diesem Link folgen: https://realpython.com/blog/python/django-and-ajax-form-submissions/, aber in der Konsole bekomme ich folgende Fehlermeldung:Wie kann ein Abfrageergebnis verwendet werden, um andere Suchanfragen in DJango ORM zu filtern?

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

/Buscar/Producto/Ist die URL mit der Ansicht verbunden, das funktioniert, denke ich, das ist nicht das Problem.

Nachdem die Modelle importieren, habe ich versucht, die folgende in Django-Shell:

resp_producto=Producto.objects.filter(codigo_producto=9786071411532) 
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] 

In der Shell, wenn ich die Variablen drucken waren ich die querysets gespeichert, kann ich die Ergebnisse sehen, so dass ich nicht weiß, warum das nicht funktioniert.

9786071411532 ist ein Produktcode, der in der MySQL-Datenbank existiert. Er wird in einer Spalte mit dem Namen codigo_producto gespeichert, die den gleichen Namen wie ein im Produkt gespeichertes Feld hat, eigentlich ist es ein Primärschlüssel.

Erklären der Modelle: InventarioProducto hat ein Feld, das von Producto ein Fremdschlüssel ist. Das Feld im Modell InventarioProducto heißt producto_codigo_producto und der Primärschlüssel von Producto heißt codigo_producto. So verweist producto_codigo_producto auf codigo_producto. Das Modell Precio hat denselben Fremdschlüssel mit demselben Namen, der im Modell InventarioProducto verwendet wird, so dass sie auf die gleiche Weise funktionieren.

Auch ich sicherstellen, dass alle Daten, die ich wirklich existiert bin anfordert. Hier

ist der Ansicht:

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

Antwort

0

ich den GELÖST Text auf eine Antwort verschoben haben:

ich dies geändert:

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

Um dies:

resp_inventario=InventarioProducto.objects.filter(producto_codigo_producto__in=resp_producto) 
Verwandte Themen