ColdFusion, добавляющий дополнительные кавычки при построении базы данных, запрашивает в строках

По умолчанию связанное поле (PrimaryKeyRelatedField, SlugRelatedField и т. Д.) Отображается с выбранным по умолчанию HTML select . Проверьте этот фрагмент .

Среда Django REST позволяет изменить стиль рендеринга поля сериализатора с помощью ключевого аргумента style (см. Этот документ ).

Если вы не хотите, чтобы API отображал идентификаторы существующих объектов в пределах выбора, измените аргумент style поля сериализатора, установив стиль рендеринга для простого ввода HTML , Примерно так:

class BookingRequestSerializer(serializers.ModelSerializer):
    ...
    related_field = PrimaryKeyRelatedField(
        queryset=RelatedModel.objects.all(),
        style={'base_template': 'input.html'},
    ) 

11
задан Jeromy French 8 March 2013 в 14:54
поделиться

4 ответа

Ответ на Ваш вопрос, как другие сказали, использует preserveSingleQuotes(...)

Однако решение, которое Вы на самом деле хотите, не должен динамично создавать Ваши запросы этим способом. Это Плохо Плохо Плохо.

Поместите свой SQL в тегах cfquery, с любой IFS/переключателями/и т.д. как соответствующий, и удостоверьтесь, чтобы все переменные CF использовали cfqueryparam тег.

(Отметьте при использовании переменных в пункте ORDER BY необходимо будет вручную выйти из любых переменных; cfqueryparam не может использоваться В пунктах ORDER BY),

6
ответ дан 3 December 2019 в 03:19
поделиться

ColdFusion, дизайном, выходит из одинарных кавычек при интерполяции переменных в <cfquery> теги.

Чтобы сделать, что Вы хотите, необходимо использовать PreserveSingleQuotes() функция.

<cfquery ...>#PreserveSingleQuotes(query)#</cfquery>

Это не обращается, однако, к опасности Внедрения SQL, которому Вы подвергаете себя.

Используя <cfqueryparam> также позволяет Вашей базе данных кэшировать запрос, который в большинстве случаев улучшит производительность.

Могло бы быть полезно прочитать старый столбец Ben Forta и недавнее сообщение Brad Wood для получения дополнительной информации о преимуществах использования <cfqueryparam>.

18
ответ дан 3 December 2019 в 03:19
поделиться

ColdFusion автоматически выходит из кавычек одинарных кавычек в <cfquery> теги, когда Вы используете следующий синтаксис:

SELECT * FROM TABLE WHERE Foo='#Foo#'

В случае, если Вы хотели бы сохранить одинарные кавычки в #Foo# необходимо звонить #PreserveSingleQuotes(Foo)#.

Будьте знающие, автоматический выход работает только на значения переменных, не на функциональные результаты.

SELECT * FROM TABLE WHERE Foo='#LCase(Foo)#' /* Single quotes are retained! */

В том свете, функции PreserveSingleQuotes() (см. Adobe LiveDocs), не намного больше, чем "пустая операция" на значении - превращение его в функциональный результат для обхода автовыхода.

4
ответ дан 3 December 2019 в 03:19
поделиться

Я проголосовал за ответ Dave, так как я думал, что он сделал хорошее задание.

Я хотел бы добавить однако, что существует также несколько различных инструментов, разработанных для ColdFusion, который может упростить много общих задач SQL, которые Вы, вероятно, выполните. Существует очень легкий инструмент под названием DataMgr, записанный Steve Bryant, а также Передачей от Mark Mandel, Реактор, который был первоначально создан Doug Hughes и один, который я разработал, назвал DataFaucet. Каждый из них имеет свои собственные достоинства и недостатки. Лично я думаю, что Вы склонны полагать, что DataFaucet тот, который даст Вам лучшую способность остаться в cfscript со множеством синтаксисов для создания различных видов запросов.

Вот несколько примеров:

qry = datasource.select_avg_price_as_avgprice_from_products(); //(requires CF8)

qry = datasource.select("avg(price) as avgprice","products"); 

qry = datasource.getSelect("avg(price) as  avgprice","products").filter("categoryid",url.categoryid).execute();

qry = datasource.getSelect(table="products",orderby="productname").filter("categoryid",url.categoryid).execute();


Платформа гарантирует, что cfqueryparam всегда используется с этими операторами фильтра для предотвращения нападений внедрения SQL, и существуют подобные синтаксисы для вставки, обновления и операторов удаления. (Существует несколько простых правил избежать внедрения SQL.)

0
ответ дан 3 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: