diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 3d44c91..cf19036 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -3,6 +3,10 @@ History ======= +v1.2.8 +------ +- support for list params in query preview + v1.2.7 ------ - improved `prettyprint_query()` diff --git a/query_inspector/admin.py b/query_inspector/admin.py index cd5deed..4687ab6 100644 --- a/query_inspector/admin.py +++ b/query_inspector/admin.py @@ -1,5 +1,6 @@ import time import traceback +import json from django.http import HttpResponseRedirect from django.urls import reverse from django.contrib import admin @@ -128,6 +129,16 @@ def preview(self, request, object_id): for parameter in parameters } + # Adjust list parameters + # Es: "['my', 'id']" --> ['my', 'id'] + # this is a rather weak solution which we might improve sooner or later + # Working use case: + # params = {'countries': "['my', 'id']"} + # sql = " ... WHERE lower(C.code) = ANY( %(countries)s )" + for key, value in params.items(): + if value.startswith('[') and value.endswith(']'): + params[key] = json.loads(value.replace('\'', '"')) + # Load default parameters if request.method =="GET": for key, value in params.items(): diff --git a/query_inspector/trace.py b/query_inspector/trace.py index 6335123..015226d 100644 --- a/query_inspector/trace.py +++ b/query_inspector/trace.py @@ -87,7 +87,7 @@ def escape(v): sql = _str_query(query.replace('\n', ' '), params).strip() print(sql) if params is not None: - trace('params[]: ' + str(params), color='black', on_color='on_white') + trace('params: ' + str(params), color='light_grey') print("-" * 80)