在Django中将queryset转换为list

时间:2015-06-02 13:46:30

标签: python django

我有一个包含字段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图表​​中。

3 个答案:

答案 0 :(得分:1)

MyModel.objects.values_list('date', 'value', flat=True)

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

答案 1 :(得分:0)

您可以使用列表理解:

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

事实上,通过这种方式,您可以根据需要转换数据。

答案 2 :(得分:0)

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