Welcher Teil davon ist verwirrend? http://docs.djangoproject.com/en/1.2/ref/models/querysets/#in Es scheint sehr klar.
Es ist nicht ganz klar aus der Frage, was das Problem ist.
Fragen Sie, wie Sie einen mehrteiligen Schlüssel verwenden? Wenn ja, wirst du mit dem einfachen __in
unglücklich sein.
Wenn Sie versuchen, nach einem "ODER" eines zweiteiligen Schlüssels zu suchen, müssen Sie eine komplexere Bedingung erstellen.
Hier starten: http://docs.djangoproject.com/en/1.2/topics/db/queries/#complex-lookups-with-q-objects
from django.db.models import Q
product_list.filter(
Q(productnr='OB520', supplier_id=3) | Q(productnr='RH402', supplier_id=20))
Wenn Sie versuchen, Multi-Key-Lookups zu tun, das ist sie, wie sie arbeiten hat.
Oder ist das Problem, dass Ihre "in" -Klausel eine lange Liste von bestimmten Werten hat?
Wenn Sie eine lange Liste haben, möchten Sie vielleicht die Abfrage in Stücken erstellen.
q_obj= Q()
for p, s in some_list_of_pairs;
q_obj |= Q(productnr=p, supplier_id=s)
product_list.filter(q_obj)
Das Obige ist ungetestet. Außerdem ist es wahrscheinlich ineffizient.
Was ist besser ist so etwas.
def values_iter(some_list_of_pairs):
for p, s in some_list_of_pairs
yield product_list.get(productnr=p, supplier_id=s)
Das wird eine Reihe von sehr effizienten SQL-Lookups nacheinander tun. Das kann schneller ausgeführt werden als das Erstellen einer komplexen IN-Klausel mit mehreren Schlüsseln.
Die Frage ist nicht klar? "Ja wirklich?" Die Frage ist einfach. WIE VERWENDEN SIE DAS __in Filter mit zwei oder mehr Feldern/Werten? Die Produktliste kann bis zu 3000 Artikel umfassen. – Bingimar
@Bingimar: "Die Produktliste kann bis zu 3000 Artikel umfassen"? Ist das in der Frage? Ich sehe es nicht. Sie können behaupten, dass es klar ist. Es ist deine Frage, natürlich verstehst du es. Interessant, ich bin nicht du. Für mich ist es nicht klar. Ich bin nicht dünn, nicht so schlau und nicht so gutaussehend. Sie können die Frage wiederholen. Oder Sie können ** die Frage aktualisieren, damit die Leute mich verstehen können. Es zu wiederholen scheint nicht hilfreich zu sein. Es scheint hilfreich zu sein, alle Fakten zu erweitern und zu erklären, und all die Fakten einzubeziehen. –