【发布时间】:2018-06-12 00:30:51
【问题描述】:
我有一个这样的数据库:
class MyCPU(models.Model):
cpu_name = models.CharField(max_length=100)
cpu_count = models.IntegerField()
class MyMachine(models.Model):
hostname = models.CharField(max_length=50)
ip = models.CharField(max_length=50)
cpu = models.ForeignKey(CPU, on_delete=models.CASCADE)
如何在 Django 中实现以下原始 SQL 命令的结果?
select sum(cpu_count) as sum_cpu from my_machine inner join my_cpu on my_machine.cpu_id=my_cpu.id
我基本上想总结所有机器中有多少 CPU。
我已经尝试过这个解决方案,但它不起作用
Machine.objects.annotate(total_cpu=Sum('cpu__cpu_count'))
【问题讨论】:
-
没用是什么意思?有什么错误吗?
-
我期望一个整数,目的是总结所有机器中有多少 CPU。但它返回一个查询集
-
然后执行
queryset.values()。然后你会得到 dict 的结果。 -
JOIN 的意义何在?如果你想要一个单一的值,为什么不
MyCPU.objects.aggregate(total_cpu=Sum('cpu_count'))? -
我的意思是所有机器中有多少 CPU。我们需要从机器表和 CPU 表中选择
标签: django sum inner-join