Django: How to read current select_related() values

0 Comments

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

6uudsa0n9dqhs3ebyzvzlpxm
All good?

 
Copyright © Twig's Tech Tips
Theme by BloggerThemes & TopWPThemes Sponsored by iBlogtoBlog