【问题标题】:Django combine two models instances into one instance for viewingdjango将两个模型实例合并为一个实例查看
【发布时间】:2019-02-20 20:31:30
【问题描述】:

我正在尝试将两个不同(但相似)的模型实例组合到一个对象中以供查看。这是我正在尝试做的一个非常基本的示例(但对于具有许多属性/功能的更复杂的模型):

class Purchase(models.Model):
    user = models.ForeignKey(User)
    amount = models.DecimalField(...)
    timestamp = ...

    @property
    def taxes()
         ...
         return tax_amount

现在假设我们有 2 次购买是由同一用户进行的。我想组合这两个实例,以便在用户视图中看起来只有一个实例,但它实际上是两个模型的总和。这包括模型字段的总和以及任何可汇总的属性。我不确定模型上的非数字函数会发生什么(但如果它们不适用于组合实例,我可以)。

【问题讨论】:

    标签: python django python-3.x django-models django-views


    【解决方案1】:
    ...
    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']
    

    这就是在查询集上实现计算的方法。注意.aggregate() 的用法。我强烈建议您阅读有关聚合和注释的 Django 文档。它可用here。 请记住,aggregate() 返回的是字典对象而不是查询集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 2023-03-23
      • 2017-03-11
      相关资源
      最近更新 更多