Python 如何使用带有外键的django注释

Python 如何使用带有外键的django注释,python,django,orm,Python,Django,Orm,考虑简单的Django模型 class Journey(models.Model): vrn=models.CharField(max_length=200) # Vehicle Reg No kilo=models.FloatField() class J_user(models.Model): jdi=models.ForeignKey(Journey, related_name="Journey_User",on_delete = models.DO_NOTHIN

考虑简单的Django模型

class Journey(models.Model):
    vrn=models.CharField(max_length=200) # Vehicle Reg No
    kilo=models.FloatField()

class J_user(models.Model):
    jdi=models.ForeignKey(Journey, related_name="Journey_User",on_delete = models.DO_NOTHING,)
    uid=models.IntegerField()
在一个表格中很容易注释,就像我们想要每辆车的总行驶公里数(vrn表示车辆的注册号)

现在我想做一个查询,返回每个用户在每辆车上行驶了多少公里

设置行程表的数据

J_用户表的数据

那么结果应该是

谢谢您的帮助。

这是您的问题:

Journey
.objects
.order_by()   #<-- important to avoid include sort fields
.values('vrn', 'j_user__uid', )
.annotate(Total_kilo=Sum('kilo'))
结果:

SELECT "material_material"."uf_id", 
       "ufs_uf"."mp_id", 
       Sum("material_material"."total_social_per_c") AS 
       "total_social_per_c__sum" 
FROM   "material_material" 
       INNER JOIN "ufs_uf" 
               ON ( "material_material"."uf_id" = "ufs_uf"."id" ) 
GROUP  BY "material_material"."uf_id", 
          "ufs_uf"."mp_id" 
这是您的查询:

Journey
.objects
.order_by()   #<-- important to avoid include sort fields
.values('vrn', 'j_user__uid', )
.annotate(Total_kilo=Sum('kilo'))
结果:

SELECT "material_material"."uf_id", 
       "ufs_uf"."mp_id", 
       Sum("material_material"."total_social_per_c") AS 
       "total_social_per_c__sum" 
FROM   "material_material" 
       INNER JOIN "ufs_uf" 
               ON ( "material_material"."uf_id" = "ufs_uf"."id" ) 
GROUP  BY "material_material"."uf_id", 
          "ufs_uf"."mp_id" 

根据您的模型,它应该是:

J_user.objects.values('uid', vrn=F('jdi__vrn')).annotate(kilo=Sum('jdi__kilo'))

根据您的模型,它应该是:

J_user.objects.values('uid', vrn=F('jdi__vrn')).annotate(kilo=Sum('jdi__kilo'))