首页 > 解决方案 > 获取一周中每一天的订单计数

问题描述

嗨,我有一个模型:

class Order(models.Model):
    user=models.ForeginKey(User)
    startDatatime = models.DateTimeField(blank=True, null=True)

我想在每个工作日计算订单。比如在所有星期一的订单计数和所有工作日等

编辑

这是一个好方法吗?

 data = []
        weekdays = {'Sunday': 1, 'Monday': 2, 'Tuesday': 3, 'Wednesday': 4, ' Thursday': 5,
                    'Friday': 6, 'Saturday': 7}
        for day, value in weekdays.items():
            weekly_tasks_count = Task.objects.filter(
                todo_list__for_user=request.user,
                creation_date_time__week_day=value).count()
            data.append({day: weekly_tasks_count})

标签: djangodjango-modelsdjango-rest-framework

解决方案


您可以使用列表推导进一步整理您的代码。

WEEKDAYS = {
  'Sunday': 1, 
  'Monday': 2, 
  'Tuesday': 3, 
  'Wednesday': 4, 
  'Thursday': 5,
  'Friday': 6, 
  'Saturday': 7
}
  
data = [
  {
    day: Task.objects.filter(
      todo_list__for_user=request.user,
      creation_date_time__week_day=value).count()
  )} 
  for day, value in WEEKDAYS.items()
]

另一项可能的改进是根据模块中的值构建WEEKDAYS字典datetime,但到目前为止,按照您的方式定义它并不会损害可读性。


推荐阅读