2014-04-28 1 views
1

Я пытаюсь создать пространственную таблицу, как это (from here):Django and Postgis: Как создать пространственную таблицу с CONSTRAINT enforce_geotype_geom в Django?

CREATE TABLE landmarks 
(
    id serial NOT NULL, 
    name character varying(50), 
    the_geom geometry, 
    CONSTRAINT landmarks_pkey PRIMARY KEY (gid), 
    CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2), 
    CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL), 
    CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326) 
); 

Как я могу создать таблицу, как это в модели Django? Я знаю, как создавать поля, но не знаю, как добавить CONSTRAINT.

Большое спасибо!

ответ

2

Старая модель PostGIS перед 2.x использовала ограничения, как в вопросе. В более новом стиле используются typmods, такие как geometry(Point, 4326).

Старый стиль может настраиваться вручную с использованием соответствующего DDL или с помощью служебной функции AddGeometryColumn с use_typmod=false.

Новый стиль typmod обычно рекомендуется по сравнению с более старыми стилями, основанными на ограничениях.