Make dictlookup() filter compatible with both 2.2 and 3.2
authorMagnus Hagander <magnus@hagander.net>
Sun, 7 Nov 2021 15:11:56 +0000 (16:11 +0100)
committerMagnus Hagander <magnus@hagander.net>
Thu, 18 Nov 2021 13:21:42 +0000 (14:21 +0100)
pgweb/core/templatetags/pgfilters.py

index 114cb17dbdf352bf35e5efc6a2189ebf12ff4f0b..f5531a440e7fc25d7ca82db4800abd95fd267946 100644 (file)
@@ -1,5 +1,5 @@
 from django.template.defaultfilters import stringfilter
-from django import template
+from django import template, forms
 from django.utils.safestring import mark_safe
 from django.template.loader import get_template
 from django.conf import settings
@@ -71,7 +71,12 @@ def planet_title(obj):
 
 @register.filter(name='dictlookup')
 def dictlookup(value, key):
-    return value.get(key, None)
+    if hasattr(key, 'value'):
+        # Django 3.1 made this a ModelChoiceIteratorValue -- while we support both 2.2 and 3.2,
+        # we need to treat them differently.
+        return value.get(key.value, None)
+    else:
+        return value.get(key, None)
 
 
 @register.filter(name='keylookup')