Well, the official database API docs say [1]:
"In some rare cases, you might wish to pass parameters to the SQL
fragments in extra(select=...)`. For this purpose, use the
select_params parameter. Since select_params is a sequence and the
select attribute is a dictionary, some care is required so that the
parameters are matched up correctly with the extra select pieces. In
this situation, you should use a
django.utils.datastructures.SortedDict for the select value, not just
a normal Python dictionary."
And the branch notes for queryset-refactor say [2]:
"Still on extra(select=...)... if you want to substitute parameters
into these extra selection columns, use the select_params argument to
extra(). The params argument is only applied to the extra where
conditions."
And the backwards-incompatible changes page [3] points to the above
notes on the branch description page.
[1] http://www.djangoproject.com/documentation/db-api/#extra-select-none-where-none-params-none-tables-none-order-by-none-select-params-none
[2] http://code.djangoproject.com/wiki/QuerysetRefactorBranch#Other
[3] http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges#Queryset-refactormerge
--
"Bureaucrat Conrad, you are technically correct -- the best kind of correct."