How to convert export Django QuerySet to one dictonary?
I want to insert Django QuerySet as data_source into DataTable for Bokeh
queryset = Model.objects.all()
qs = queryset.values()
qs = dict(qs)
header = [field.verbose_name for field in Model._meta.get_fields()]
columns = [TableColumn(field=col, title=col) for col in header]
source = ColumnDataSource(qs)
data_table = DataTable(source=source, columns=columns)
script, div = components(data_table)
qs = dict(qs)
^^^^^^^^
ValueError: dictionary update sequence element #0 has length 11; 2 is required
The qs
is not a dictionary, it is a sequence of object values (Queryset Values). Hence you can cast it as dictionary, but you can cast it as list (which will be list of dictionaries):
qs = list(qs)
It is not enough to load in your database. You need to build the dictionary from that list:
qs_dict = {}
for item in qs:
for field in Model._meta.get_fields():
qs_dict[field.verbose_name] = qs_dict.get(field.verbose_name, []).append(item[field.name])
source = ColumnDataSource(qs_dict)