Python Django将两个模型实例合并为一个实例以供查看
我正在尝试将两个不同(但相似)的模型实例合并到一个对象中,以便进行查看。这是我尝试做的一个非常基本的示例(但对于具有许多属性/函数的更复杂的模型): 现在假设我们有两次购买是由同一个用户完成的。我想合并这两个实例,以便在用户视图中看起来只有一个实例,但实际上它是两个模型的总和。这包括模型字段的总和以及任何可求和的属性。我不确定模型上的非数值函数会发生什么情况(但如果它们对组合实例不起作用,我也可以) 这就是如何在查询集上实现计算的方法。注意Python Django将两个模型实例合并为一个实例以供查看,python,django,python-3.x,django-models,django-views,Python,Django,Python 3.x,Django Models,Django Views,我正在尝试将两个不同(但相似)的模型实例合并到一个对象中,以便进行查看。这是我尝试做的一个非常基本的示例(但对于具有许多属性/函数的更复杂的模型): 现在假设我们有两次购买是由同一个用户完成的。我想合并这两个实例,以便在用户视图中看起来只有一个实例,但实际上它是两个模型的总和。这包括模型字段的总和以及任何可求和的属性。我不确定模型上的非数值函数会发生什么情况(但如果它们对组合实例不起作用,我也可以) 这就是如何在查询集上实现计算的方法。注意.aggregate()的用法。我强烈建议您阅读关于聚合
.aggregate()
的用法。我强烈建议您阅读关于聚合和注释的Django文档。它是可用的。
请记住,aggregate()
返回字典对象,而不是查询集
这就是如何在查询集上实现计算的方法。注意.aggregate()
的用法。我强烈建议您阅读关于聚合和注释的Django文档。它是可用的。
请记住,aggregate()
返回字典对象,而不是查询集
class Purchase(models.Model):
user = models.ForeignKey(User)
amount = models.DecimalField(...)
timestamp = ...
@property
def taxes()
...
return tax_amount
...
from django.db.models import Sum
From .models import Purchase
...
def get_total_purchase_amount(request, user_id):
purchases = Purchase.objects.filter(user__pk=user_id).aggregate(Sum('amount'))
print(purchases['amount__sum']