diff --git a/CHANGELOG.rst b/CHANGELOG.rst index cf19036..9f7690e 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -3,6 +3,10 @@ History ======= +v1.2.9 +------ +- Accept dataset expressed as list of either dict or OrderedDict to keep dict ordering with old versions of Python + v1.2.8 ------ - support for list params in query preview diff --git a/query_inspector/templatetags/query_inspector_tags.py b/query_inspector/templatetags/query_inspector_tags.py index ea4bb1f..ba931d7 100644 --- a/query_inspector/templatetags/query_inspector_tags.py +++ b/query_inspector/templatetags/query_inspector_tags.py @@ -5,6 +5,7 @@ import io import csv import decimal +from collections import OrderedDict from django.urls.exceptions import NoReverseMatch from django import template from django.urls import reverse @@ -330,7 +331,7 @@ def get_foreign_value(obj, column_name): return current_value def get_cell_value(row, column): - if type(row) == dict: + if type(row) in [dict, OrderedDict, ]: value = row.get(column['name']) else: if '__' not in column['name']: @@ -438,7 +439,7 @@ def render_value_as_td(row, column, options): # Experimental: detect all fields if '*' in fields and num_rows > 0: - if type(rows[0]) == dict: + if type(rows[0]) in [dict, OrderedDict, ]: fields = tuple(rows[0].keys()) else: fields = [f.name for f in rows[0]._meta.fields]