Я использую модификатор extra () в представлении.
(См. http://docs.djangoproject.com/en/1.1/ref/models/querysets/#extra-select-none-where-none-params-none-tables-none-order-by-none-select-params-none)
Вот код:
def viewname(request)
...
exact_matchstrings=[]
exact_matchstrings.append("(accountprofile.first_name LIKE '" + term + "')")
exact_matchstrings.append("(accountprofile.first_name LIKE '" + term + '\%' + "')")
extraquerystring = " + ".join(exact_matchstrings)
return_queryset = return_queryset.extra(
select = { 'match_weight': extraquerystring },
)
Два приведенных выше оператора добавления почти полностью похожи, за исключением того, что второй добавляет %
подстановочный знак SQL.Это вызывает ошибку;утверждение без %
не вызывает проблем.Что происходит с %
?Я удивлен, что django считает, что этот символ не определен, поскольку он указан в спецификации SQL.Например, следующий оператор SQL выполняется просто отлично:
select (first_name like "Car") + (first_name like "Car%") from accountprofile;
Но попытка запустить его с помощью модификатора extra () в моем коде представления и оценки результирующего набора запросов приводит к ошибке.Я думаю, что "%" нужно экранировать, поэтому я уже попробовал это.Есть идеи?