JOIN重复行django ORM python

时间:2016-12-26 21:52:02

标签: python django orm

我有以下型号:

UrlTree

并且,有了这些数据:

class Cierre(models.Model): 
    bus=models.ForeignKey(Bus)
    ruta=models.ForeignKey(Ruta,editable=False) 
    conductor=models.ForeignKey(Conductor,editable=False)       
    total_pasajeros = models.IntegerField(editable=False)
    total_viaje = models.FloatField(editable=False)

如果列'Ruta'和列''导体'重复,我需要加入相应的列'valor total viaje'。我想要的结果是:

Ruta    Bus     conductor   Total pasajeros Valor total viaje
1       qwe789  1111111     50              107500.0
1       qwe789  1111111     100             215000.0
2       qwe789  1111111     50              102500.0

我试过了:

 Ruta   Bus     conductor   Total pasajeros Valor total viaje
    1       qwe789  1111111     50          322500.0     
    2       qwe789  1111111     50          102500.0

cierre = Cierre.objects.annotate(sales=Sum('ruta'))

2 个答案:

答案 0 :(得分:0)

cierre = Cierre.objects.distinct()

答案 1 :(得分:0)

此查询似乎可以执行您想要的操作:

Cierre.objects.values("ruta", "bus").annotate(total_viaje = Sum("total_viaje"))

它产生:

<QuerySet [
    {'bus': u'qwe789', 'ruta': 1L, 'total_viaje': 322500.0},
    {'bus': u'qwe789', 'ruta': 2L, 'total_viaje': 102500.0}
]>

然而,这个查询忽略了列&#34; Total pasajeros&#34;,因为在你的例子中你任意选择使用值50而不是100用于ruta = 1的行,所以我认为它是无关。如果您还想要添加&#34; total_pasajeros&#34;的值,您也可以添加另一个.annotate()和SUM该列:)