【问题标题】:Django SUM Query with VIEW Statement带有 VIEW 语句的 Django SUM 查询
【发布时间】:2021-01-25 09:43:44
【问题描述】:

我正在尝试使用 Django Query 对整个表进行求和。我还有一个使用我的 django 的 Postgresql 数据库。

我的表锻炼摘要视图:(实际上是它的 VIEW 语句):

user_id workout results
1 Bench 281.31
1 Flat 137.06
1 Bench 1497.91
1 Bench 64.50
1 SQ 555.65
1 Wrench 2803.39
1 Flat 2115.73
1 Bench 10578.63
1 Flat 146.52
1 Flat 1770.65
1 Wrench 22.61

我的意见.py

def workoutsummary (request):
    dailyworkout = Dailyw.objects.filter(user_id=request.user.id)
    workout = Workout.objects.filter(user=request.user, datecompleted__isnull=True)
    dailyr = Dailyw.objects.aggregate(Sum('results')).values()

我的模型.py

class Daily(models.Model):
    user_id = models.CharField(max_length=100) 
    title = models.CharField(max_length=100)
    results = models.BigIntegerField(max_digits=5, decimal_places=2)

    class Meta:
        managed = False
        db_table = "workoutsummaryview"

根据 django aggregation reference page 我确实尝试过类似的模板:

 {{ results }}

{{ dailyr.results__sum }} 

但是什么也没发生。我也尝试了 if 和 for 标记,但这也不起作用。我想所以我错过了一些重要的事情。如果有人可以帮助我,我真的很感激。提前谢谢你。

【问题讨论】:

  • 可能锻炼对象为空
  • 你试过调试django代码吗?您是否获得了那里的价值并且只是不在视图中显示任何内容?或者你甚至没有得到一个值锻炼摘要变量?
  • 检查 Workout.objects.filter(user=request.user, datecompleted__isnull=True) 是否为空
  • 您是否将dailyr 的值发送到模板?

标签: python django


【解决方案1】:

如 cmets 中所述,聚合结果可能为空。如果是这种情况,您可以通过以下方式处理这种情况:

Dailyw.objects.aggregate(Sum('results'))['results__sum'] or 0

,然后在模板中您将看到一个值(零)而不是黑色空间。

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    相关资源
    最近更新 更多