2017-01-05 3 views

ответ

1

Вы можете создать пользовательскую функцию, используя Expressions.

class GeoX(Func): 
    function = 'X' 

MyModel.objects.annotate(x=GeoX('field')) 

Это приведет к функции геометрии X будучи вызван, и это результат аннотируемого в поле помечены х в вашей модели. Однако это низшее решение. Лучшее решение - установить geodjango. Это обеспечивает полный доступ почти к каждой функции PostGIS. Также работает с пространственно-пространственными расширениями msyql.

+0

Спасибо, несчастию мой Postgres версия является старым для GeoDjango. – Crystal

+0

Это невезение. Почему бы не обновить, возможно, вы используете старую версию postgis, и у нее нет богатых функциональных возможностей современной версии. – e4c5

+0

огромная компания, много данных и все боятся обновления xD – Crystal

1

мне удалось решить проблему с помощью Func()

Func(F('geometry'), function='x')