1

関連テーブルの一連の基準に基づいて値のリストを返す、かなり単純なクエリセットを作成しようとしています。URL パラメーターの値に基づいて、値の配列がクエリセットのinフィルターに渡されます。

問題は、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)

INSQL クエリを手動で実行しても、句内の各ステートメントを (二重引用符ではなく) 一重引用符で囲むと、問題なく動作します。

なぜこれが起こっているのか、どうすれば修正できるのかについて何か考えはありますか?

価値があるのは、モデルの関連部分です

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)
4

2 に答える 2

2

Django がコンテンツを置き換えてクエリ フィルタを適用すると、奇妙な動作になるようです。

たぶんこれを試す価値があります:

場所 = [u'\'サンフランシスコ\'', u'\'ニューヨーク\'']

于 2012-12-27T13:35:26.327 に答える