From a44fb4aa02ed6d87f22d96a48907dbe833e1d392 Mon Sep 17 00:00:00 2001 From: Sergey Fedoseev Date: Wed, 1 Nov 2017 19:12:01 +0500 Subject: [PATCH] [2.0.x] Fixed #28632 -- Updated docs about using raw SQL with GIS and doc'd changes from refs #28518 in release notes. Backport of 8869142a4d5b069c61781c0e4c5fdc971b017949 from master --- docs/ref/contrib/gis/tutorial.txt | 17 +++++++++++------ docs/releases/2.0.txt | 5 +++++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/ref/contrib/gis/tutorial.txt b/docs/ref/contrib/gis/tutorial.txt index 10f97333cc..dd043077f9 100644 --- a/docs/ref/contrib/gis/tutorial.txt +++ b/docs/ref/contrib/gis/tutorial.txt @@ -645,16 +645,21 @@ of abstraction:: __ http://spatialreference.org/ref/epsg/32140/ +.. _gis-raw-sql: + .. admonition:: Raw queries - When using :doc:`raw queries `, you should generally wrap - your geometry fields with the ``asText()`` SQL function (or ``ST_AsText`` - for PostGIS) so that the field value will be recognized by GEOS:: + When using :doc:`raw queries `, you must wrap your geometry + fields so that the field value can be recognized by GEOS:: - City.objects.raw('SELECT id, name, asText(point) from myapp_city') + from django.db import connection + # or if you're querying a non-default database: + from django.db import connections + connection = connections['your_gis_db_alias'] - This is not absolutely required by PostGIS, but generally you should only - use raw queries when you know exactly what you are doing. + City.objects.raw('SELECT id, name, %s as point from myapp_city' % (connection.ops.select % 'point')) + + You should only use raw queries when you know exactly what you're doing. Lazy Geometries --------------- diff --git a/docs/releases/2.0.txt b/docs/releases/2.0.txt index 8d4e227f53..18d170aa1b 100644 --- a/docs/releases/2.0.txt +++ b/docs/releases/2.0.txt @@ -611,6 +611,11 @@ Miscellaneous * Support for GEOS 3.3.x is dropped. +* The way data is selected for ``GeometryField`` is changed to improve + performance, and in raw SQL queries, those fields must now be wrapped in + ``connection.ops.select``. See the :ref:`Raw queries note` in + the GIS tutorial for an example. + .. _deprecated-features-2.0: Features deprecated in 2.0