У меня есть старая база данных и вам нужен индивидуальный выбор.Функция выбора postgres в аннотации Django
в SQL я могу использовать:
SELECT x(geometry) FROM table
, но я не знаю, как заставить х() функцию в Джанго выбора.
У меня есть старая база данных и вам нужен индивидуальный выбор.Функция выбора postgres в аннотации Django
в SQL я могу использовать:
SELECT x(geometry) FROM table
, но я не знаю, как заставить х() функцию в Джанго выбора.
Вы можете создать пользовательскую функцию, используя Expressions.
class GeoX(Func):
function = 'X'
MyModel.objects.annotate(x=GeoX('field'))
Это приведет к функции геометрии X будучи вызван, и это результат аннотируемого в поле помечены х в вашей модели. Однако это низшее решение. Лучшее решение - установить geodjango. Это обеспечивает полный доступ почти к каждой функции PostGIS. Также работает с пространственно-пространственными расширениями msyql.
мне удалось решить проблему с помощью Func()
Func(F('geometry'), function='x')
Спасибо, несчастию мой Postgres версия является старым для GeoDjango. – Crystal
Это невезение. Почему бы не обновить, возможно, вы используете старую версию postgis, и у нее нет богатых функциональных возможностей современной версии. – e4c5
огромная компания, много данных и все боятся обновления xD – Crystal