Python 如何使用带有外键的django注释
考虑简单的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
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'))