我有以下型号:
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 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”和列“conductor”被重复,我需要将各自的列“valor total viaje”连接起来。我想要的结果是:
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'))
以及:
cierre = Cierre.objects.annotate(
count_ruta = Count('ruta')
).order_by(
'ruta'
).filter(
count_ruta__gt=1
).distinct()
此查询似乎满足您的要求:
它产生:
但是,这个查询确实忽略了“Total pasajeros”列,因为在您的示例中,您任意选择对ruta=1的行使用值50而不是100,所以我认为这是不相关的。如果您还想将“total\u pasajeros”的值相加,只需添加另一个.annotate()并对该列求和:)
相关问题 更多 >
编程相关推荐