This was a bit of a tricky bit of information to get out. The information for select_related() is stored as a nested map. You'll need some recursive code to fetch that back out.
01.
def
generate_field_key(map, key, ancestor
=
None
):
02.
values
=
[]
03.
if
ancestor:
04.
parent
=
'%s__%s'
%
(ancestor, key)
05.
else
:
06.
parent
=
key
07.
values.append(parent)
08.
for
k, v
in
map.items():
09.
values.extend(generate_field_key(v, k, parent))
10.
return
values
11.
12.
13.
# Select related is a nested map
14.
qs
=
Something.objects.all().select_related(
'hey'
,
'hey__there'
)
15.
select_related_data
=
qs.query.select_related
16.
select_related
=
[]
17.
18.
# This can be a map or False
19.
if
select_related_data:
20.
for
key, items
in
select_related_data.items():
21.
select_related
+
=
generate_field_key(items, key,
None
)
22.
23.
print
select_related
All good?