【问题标题】:Convert queryset to list in Django在 Django 中将查询集转换为列表
【发布时间】:2015-08-16 08:31:42
【问题描述】:

我有一个查询集,其中包含字段 datevalue 的对象。

我需要用数组[[date_1, value_1],[date_2,value_2],...,[date_n,value_n]] 填充模板。

如果每个对象都有多个字段,这怎么可能?

我试过了

MyModel.objects.values_list('date', 'value')

date 以日期时间格式打印(例如datetime.date(2013, 9, 21))并且值以十进制打印(例如Decimal('72495.0'))。我需要它在 flot.js 图表中。

【问题讨论】:

标签: python django


【解决方案1】:
MyModel.objects.values_list('date', 'value', flat=True)

how-to-convert-a-django-queryset-to-a-list

【讨论】:

    【解决方案2】:

    您可以使用列表推导:

    [(str(my_record.date), str(my_record.value)) for my_record in MyModel.objects.all()]
    

    事实上,通过这种方式,您可以随心所欲地转换数据。

    【讨论】:

      【解决方案3】:
      import calendar
      import json
      
      raw_data = MyModel.objects.values_list('date', 'value')
      
      result = []
      for date, value in raw_data:
          result.append([calendar.timegm(date.timetuple()) * 1000,
                         float(value)])
      

      要在模板中使用结果,首先将其序列化为 JSON 并将data 传递给模板

      data = json.dumps(result)
      

      在模板中

      var data = {{ data|safe }};
      

      还有:

      How to convert datetime to timestamp

      How to serialize Decimal to JSON

      【讨论】:

        猜你喜欢
        • 2021-11-08
        • 2020-04-01
        • 2015-12-21
        • 2020-01-09
        • 1970-01-01
        • 2020-11-14
        • 2022-01-14
        • 2017-01-23
        • 1970-01-01
        相关资源
        最近更新 更多