2017-04-18 4 views
0

Models.pyKombination QuerySets auf einer gemeinsam genutzten Spalte basiert - django

class sells(models.Model): 
    #unimportant stuff here 
    type = ... 
    supplier = ... 
    user = ... 
    item_id = models.AutoField(primary_key=True) 

class sale_items(models.Model): 
    item_id = models.OnetoOneField(sells, on_delete=models.CASCADE, null=True) 
    item_name = ... 
    description = ... 
    #other unimportant stuff 

Also, ich versuche die Suche zu implementieren und jetzt habe ich es so, dass alle neuen Informationen in sale_items gefunden kehrt wie Name und Beschreibung. Aber ich muss auch einen Artikeltyp und einen Lieferanten ausgeben, der sich im Verkaufsmodell befindet. Im Grunde versuche ich, so etwas zu tun:

SELECT A.item_id, A.item_name ... B.type, B.supplier ... 
FROM sale_items A, sells B 
WHERE A.item_id = B.item_id 

Views.py

def SearchView(request): 
    query_results = sale_items.objects.filter(Q(item_name__icontains=search) 
         Q(description__icontains=search)) 
    return render(request, 'db/search_results.html', {'query_results':query_results}) 

ich den Code für die Variable Suche nicht enthalten, aber es ist der Text, der in der eingegebenen Suchleiste. query_results ist korrekt und in meiner Vorlage (search_results.html) verwende ich eine for-Schleife, um den Namen und die Beschreibung des Artikels auszudrucken.

Ich möchte die Informationen auch in das Verkaufsmodell aufnehmen, das der gleichen item_id entspricht. Ich habe viele verschiedene Dinge versucht, um es zum Laufen zu bringen und kann es nicht herausfinden.

Antwort

0

Versuchen Sie folgendes:

query_results = sale_items.objects.filter(Q(...) | Q(sells__type__icontains=search)) 
+0

Die Art und Lieferant/Benutzer sind mit der Suche nicht verwandt. Die Suche gibt Elemente basierend auf Name und Beschreibung zurück. Jeder Artikel hat eine ID, die in sells und sale_items enthalten ist. Also muss ich diese ID verwenden, um entsprechende Informationen von beiden Modellen zu erhalten. – Chris

Verwandte Themen