Я изо всех сил пытаюсь понять, как присоединиться к столу в Peewee на основе довольно распространенного шаблона postgis для стола. Мне нужно присоединиться к таблице на основе функции postgis (st_contains). Я думаю, это будет выглядеть примерно так:Как присоединиться к пространственным функциям в Peewee?
Station.select().join(Location, on=fn.ST_Intersects(Station.geom, Location.geom)).where(Location.name == 'Ravenswood')
выше запрос, если поддерживается, будет возвращать все станции в местопребывании имени Ravenswood. Эквивалент SQL будет:
SELECT station.name, station.district, station.line
FROM station INNER JOIN location ON ST_Intersects(station.geom, loc.geom)
WHERE location.name = 'Ravenswood';
К сожалению, мои эксперименты все, кажется, до конца с этим сокращенным TRACEBACK:
File "/Users/j.../python2.7/site-packages/peewee.py", line 1555, in generate_joins
left_field = field.to_field
AttributeError: 'NoneType' object has no attribute 'to_field'
ли Peewee поддержку этого? Я не могу найти его в документации.
Подключенное поколение Peewee проверено на наличие выражений, но не на вызовы функций. Я исправил эту ошибку в 61034c569e9679832327332aee0348a57a2b990c. Если вы используете master peewee, вы сможете запустить запрос сейчас. – coleifer