我正在使用Django + PostgreSQL應用程序中的原始SQL查詢,並且遇到了必須作爲參數傳遞PostgreSQL數組值(類型爲tags = ArrayField(m.CharField(max_length=80)
,數據庫爲應用程序/ tags character varying(80)[]
)的問題。Django原始查詢 - 如何傳遞postgres數組值作爲參數?
我用這樣的代碼:
......在得到這樣的SQL的希望產生:
SELECT * FROM myapp_code_products WHERE (tags @> '{"red"}')
但我要麼得到根本算不了什麼取代像(tags @>)
或列表或元組替換,如(tags @> ['red'])
或(tags @> ('red'))
,並且顯然這些結果都不包含有效的包含查詢。
而且,如果有人想知道,替換的參數是用戶提供的,所以只是完全繞過參數替換在這裏不是安全明智的選項。
注:還,使用原始查詢要使用的查詢集和模型的查詢這裏考慮的要求,是不是一個不錯的選擇。
(詳細信息:我在Windows 10 64位使用Django 1.10.5使用Python 3.6.0和PostgreSQL 9.3)
所以,你不想使用'ArrayField '[s] [包含](https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/fields/#contains)查找爲你建立'@>'查詢,對不對? – Udi