【发布时间】:2018-11-16 21:25:19
【问题描述】:
我在 Django ORM 中的模型是这样的
class Test(Modelbase):
id = models.IntegerField(null=True, blank=True)
amount = models.CharField(max_length=255)
我想为 id 列表添加金额。唯一的问题是金额字段是CharField。如何为 amount 字段应用 sum?
Test.objects.filter(id__in=[1,2,3]).aggregate(Sum('amount'))
我为此使用Django=1.9.1。
【问题讨论】:
-
如何添加字符?为什么数量是一个字符字段?不应该是整数还是浮点数?
-
@ArpitSolanki 是的,金额应该在浮动字段中。但我们现在不能改变它。还有一些其他的教学过程。
-
将您的
CharField()更改为IntegerField(),如果您不想丢失数据,只需添加一个名为amount2的第二个字段为IntegerField(运行makemigrations)然后循环它们通过将amount的值添加到amount2。在循环之后,现在删除字段amount(运行make migrations),将amount2重命名为amount(run make migrations),然后你就可以使用SUM了。这有点棘手,你最终会得到一个IntergerField能够使用Sum -
这里的
Modelbase是什么? -
也许使用 python
sum,但这并不完全是 django ORM。values_list('amout',flat=True),并使用sum()
标签: django django-orm