0
我試圖構造一個相當簡單的查詢集,它返回基於相關表中的一組條件的值列表。根據來自URL參數的值,將值數組傳遞給查詢集上的in
篩選器。Django的queryset沒有轉義的文本在...在查詢
問題是,Django將這些值作爲文本傳遞給SQL查詢,而不引用,因此查詢失敗。
焦點表包含公司(「實體」)的信息以及這些公司的辦公室(「辦公室」)的相關表格信息。
這是所傳遞的值的數組查詢集:
locations = [u'San Francisco', u'New York']
這裏的查詢:
companies = Entity.objects.values("name","summary").filter(office__city__in=locations)
下面是實際會達到SQL查詢:
SELECT "entities_entity"."name", "entities_entity"."summary" FROM "entities_entity" INNER JOIN "entities_office" ON ("entities_entity"."id" = "entities_office"."entity_id") WHERE "entities_office"."city" IN (San Francisco, New York)
如果我手動運行SQL查詢,但圍繞IN
子句中的每個語句用sin谷歌報價(不是雙引號),它工作正常。
有關爲什麼會發生這種情況以及我如何修復它的任何想法?
對於它的價值,這裏有款的有關部分
class Entity(models.Model):
name = models.CharField(max_length=450)
summary = models.TextField(blank=True,null=True)
class Office(models.Model):
entity = models.ForeignKey(Entity)
city = models.CharField(max_length=250,blank=True,null=True)
什麼錯誤你好嗎?你如何檢查SQL? django.db.connection.queries不包含轉義參數,它僅用於調試。 –
啊,我基於'companies.queries'重複檢查了PGAdmin中的查詢 - 也許我的數據有問題... – tchaymore