Django Filter Queryset auf "Tupel" von Werten für mehrere Spalten
Posted: 16 Feb 2025, 15:31
Sag, ich habe ein Modell: < /p>
. Wenn ich dann jeden auswählen wollte, dessen Vorname in First_List < /code> ich ausführen konnte: < /p>
Wenn ich die Suche nach oder Style anstelle der und Stilsuche durchführen wollte, kann ich dies mit Q Objekten tun : < /p>
Objekte zurückgeben, für die (Person.firstname, Person.lastName) in ZIP (First_names, last_names) ist. D.h. Ich möchte jemanden namens Bob Williams oder Rob Williamson zurückbekommen (aber nicht jemanden namens Bob Williamson oder Rob Williams). < /p>
In meinem tatsächlichen Anwendungsfall hätte First_list < /code> und last_list < /code> beide ~ 100 Elemente. < /p>
Im Moment muss ich dieses Problem in einer Django -App lösen. Aber ich bin auch neugierig auf den besten Weg, um dies in einem allgemeineren SQL -Kontext zu bewältigen. < /P>
Danke! (Und bitte lassen Sie mich wissen, ob ich etwas klären kann.)
Code: Select all
Class Person(models.Model):
firstname = models.CharField()
lastname = models.CharField()
birthday = models.DateField()
# etc...
< /code>
und sagen, ich habe eine Liste mit 2 Vornamen: First_list = ['Bob', 'Rob'] < /code> und ich habe eine Liste mit 2 Nachnamen : last_list = ['Williams', 'Williamson']
Code: Select all
Person.objects.filter(firstname__in=first_list)
< /code>
Und wenn ich jeden auswählen wollte, dessen Nachname in last_list < /code> war, könnte ich es tun: < /p>
Person.objects.filter(lastname__in=last_list)
< /code>
So gut, so gut. Wenn ich beide Einschränkungen gleichzeitig ausführen möchte, ist das einfach ... < /p>
Person.objects.filter(firstname__in=first_list, lastname__in=last_list)
Code: Select all
Person.objects.filter(Q(firstname__in=first_list) | Q(lastname__in=last_name))
< /code>
Aber was ich im Sinn habe, ist etwas Subtileres. Was ist, wenn ich nur einen Queryset zurückgeben möchte, der bestimmte Kombinationen von First und Nachnamen zurückgibt? D.h. Ich möchte die Person
In meinem tatsächlichen Anwendungsfall hätte First_list < /code> und last_list < /code> beide ~ 100 Elemente. < /p>
Im Moment muss ich dieses Problem in einer Django -App lösen. Aber ich bin auch neugierig auf den besten Weg, um dies in einem allgemeineren SQL -Kontext zu bewältigen. < /P>
Danke! (Und bitte lassen Sie mich wissen, ob ich etwas klären kann.)