Ich muss eine Zeile aus der Tabelle Type1 mit zwei Zeilen aus der Tabelle Type2 verbinden. Es gibt beispielsweise Modelle der Datenbank:Verknüpfen mit mehr als einer, spezifische Eins-zu-viele Zeilen
class Type1(models.Model):
name = models.CharField(max_length=300)
class Type2(models.Model):
foreign = models.ForeignKey(Type1)
name = models.CharField(max_length=50)
value = models.IntegerField()
In SQL sieht Abfrage wie folgt:
SELECT A.name, B.value, C.value
FROM Type1 A, Type2 B, Type2 C
WHERE B.foreign = C.foreign = A.id
AND B.name = _VAR1_ AND C.name = _VAR2_
Wie diese Abfrage tun Methoden Django (nicht roh SQL!)?
Danke für die Antwort. Ich werde mein Problem beschreiben: für jedes gibt es nur ein und nur ein . Ich möchte Tabelle (QuerySet) mit Informationen von allen erhalten. Es sollte folgende Spalten haben (Elemente?) - [x.name, y1.value, y2.value] –
Etwas wie Type2.objects.filter (type2__name = _VAR1 _). Values ('name', 'type2__value') und Type2. objects.filter (type2__name = _VAR2 _). values ('name', 'type2__value') kombiniert –
Sie kennen also das vorhang rechts? Nehmen Sie eine Abfrage vor und speichern Sie sie in einer Variablen: t1 = Type1.objects.get (id = x). Als nächstes machen Sie eine Abfrage auf Type2, um Ihre zwei Zeilen zurückzugeben: t2 = Type2.objects.filter (Q (Fremdschlüssel = t1, Name = VAR1 | Fremdschlüssel = t1, Name = VAR2)). Wenn Sie nur zwei Assoziationen haben, wie Sie gesagt haben, gibt dies eine Liste mit zwei Zeilen zurück, die Sie wollen. Ihre endgültige Liste wird [t1.name, t2 [0] .value, t2 [1] .value] sein. –
Tico