0
我必須從表Type1的兩行中連接一行。有數據庫的模型示例:加入多個特定的一對多行
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()
在SQL中,查詢看起來是這樣的:
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_
如何做到使用Django的方法是查詢(而不是原始的SQL!)?
感謝您的回覆。我將描述我的問題:對於每個<元素Type1 x>,只有一個<元素Type2 y1與foreign = x和name = _VAR1_>,並且只有一個<元素Type2 y2與foreign = x和name = _VAR2_>。我想接收來自所有人的信息的表(QuerySet)。它應該有以下列(元素?) - [x.name,y1.value,y2.value] –
類似於Type2.objects.filter(type2__name = _VAR1 _)。values('name','type2__value')和Type2。 objects.filter(type2__name = _VAR2 _)。values('name','type2__value')combined –
所以你知道 beforehang right?進行查詢並將其保存到變量:t1 = Type1.objects.get(id = x)。接下來,在Type2上進行查詢以返回兩行:t2 = Type2.objects.filter(Q(foreignkey = t1,name = VAR1 | foreignkey = t1,name = VAR2))。如果你說只有兩個關聯,這將返回一個包含你想要的兩行的列表。你的最終名單將是[t1.name,t2 [0] .value,t2 [1] .value]。 –
Tico