Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django queryset在where…in查询中未转义文本_Django_Postgresql_Django Queryset_Postgresql 9.1 - Fatal编程技术网

Django queryset在where…in查询中未转义文本

Django queryset在where…in查询中未转义文本,django,postgresql,django-queryset,postgresql-9.1,Django,Postgresql,Django Queryset,Postgresql 9.1,我试图构造一个相当简单的queryset,它根据相关表中的一组条件返回一个值列表。根据URL参数中的值,将值数组传递给queryset上过滤器中的 问题是Django将这些值作为文本传递到SQL查询中,而不使用引号,因此查询失败 焦点表格包含有关公司(“实体”)的信息以及有关这些公司的办事处(“办事处”)的表格信息 这是传递给queryset的值数组: locations = [u'San Francisco', u'New York'] 问题是: companies = Entity.obj

我试图构造一个相当简单的queryset,它根据相关表中的一组条件返回一个值列表。根据URL参数中的值,将值数组传递给queryset上过滤器中的

问题是Django将这些值作为文本传递到SQL查询中,而不使用引号,因此查询失败

焦点表格包含有关公司(“实体”)的信息以及有关这些公司的办事处(“办事处”)的表格信息

这是传递给queryset的值数组:

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
子句中的每个语句括起来,则效果很好

关于为什么会发生这种情况,以及我如何解决它,有什么想法吗

值得一提的是,以下是模型的相关部分

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)

当Django替换内容以应用查询过滤器时,这似乎是一种奇怪的行为

也许值得一试:

地点=[u'\'旧金山''',u'\'纽约']


你犯了什么错误?您如何检查SQL?django.db.connection.querys不包含转义参数,只是为了调试。啊,我在PGAdmin中根据
公司对查询进行了双重检查。查询
--可能我的数据中有错误。。。