GeoDjango でin
フィールド ルックアップを使用してネストされたクエリを作成するのに問題があります。次のコードは、問題を示しています。
inner_qs = Footprint.objects.filter(geom__bboverlaps=bounding_box)
outer_qs = Footprint.objects.filter(pk__in=inner_qs)
outer_qs.count()
# error
上記のコードでは、次の例外が発生します。
if (len(params) == 1 and params[0] == '' and lookup_type == 'exact'
File "../python2.6/site-packages/django/contrib/gis/db/backends/postgis/adapter.py", line 24, in __eq__
return (self.ewkb == other.ewkb) and (self.srid == other.srid)
AttributeError: 'str' object has no attribute 'ewkb'
(ここに完全なスタック トレースがあります)
内部クエリに空間フィルターが含まれている場合は常にエラーが発生するようです。ただし、次のネストされたクエリは正常に機能します。
inner_qs = Footprint.objects.filter(frequency__gt=1)
outer_qs = Footprint.objects.filter(pk__in=inner_qs)
outer_qs.count()
# ok
問題の原因は何ですか?