Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django将两个模型实例合并为一个实例以供查看_Python_Django_Python 3.x_Django Models_Django Views - Fatal编程技术网

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']