2011-06-25 73 views
5

我有一個包含多個應用程序的Django項目。他們都與engine = django.db.backends.postgresql_psycopg2分享一個分貝。現在我想要GeoDjango的一些功能,並決定將其集成到我現有的項目中。我閱讀了教程,看起來我必須爲GeoDjango創建一個單獨的spartial數據庫。我想知道是否有反正。我試圖添加到我的應用程序models.py之一這一點沒有改變我的數據庫設置:將GeoDjango集成到現有的Django項目中

from django.contrib.gis.db.models import PointField 

class Location(models.Model): 
     location = PointField() 

但是當我運行執行syncdb,我得到這個錯誤。

File "/home/virtual/virtual-env/lib/python2.7/site-packages/django/contrib/gis/db/models/fields.py", line 200, in db_type 
    return connection.ops.geo_db_type(self) 

回答

2

其實,我記得,django.contrib.gis.db.backends.postgis是postgresql_psycopg2的擴展,使您可以更改設置數據庫驅動程序,創建具有空間模板創建新的數據庫,然後將數據遷移到新的數據庫(南方對此很好)。就其本身而言,geodjango高度依賴於DB內部方法,因此,不幸的是,你不能將它與常規數據庫一起使用。

其他方法 - 你可以使用django的multi-db的能力,併爲geodjango模型創建額外的數據庫。

+1

如果你不使用南方,你需要開始。特別是如果您使用版本控制工具開發的。 –

1

您的錯誤看起來像它來自不改變您的設置文件中的數據庫擴展名。您在技術上不需要使用空間模板創建新數據庫,只需在現有數據庫上運行PostGIS腳本即可獲得所有地理空間優勢。像往常一樣,你應該在做這件事之前備份你現有的數據庫。

0

我不是100%,但我認爲你可以管postgis.sql和spatial_ref_sys.sql到你現有的數據庫,授予對錶的權限,並將數據庫設置更改爲「django.contrib.gis.db .backends.postgis」。 (您已經安裝當然DEPS後)

https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#spatialdb-template

我很想看看你發現了什麼。要小心,postgis安裝可以建立一些角色,但你不希望它建立太多。

相關問題