2011-06-25 17 views
5

私は複数のアプリケーションを持つDjangoプロジェクトを持っています。彼らはすべてengine = django.db.backends.postgresql_psycopg2とdbを共有します。今私はGeoDjangoの機能をいくつか望み、それを私の既存のプロジェクトに統合したいと決めました。私はチュートリアルを読んで、私はGeoDjango用の別個のスパータイアデータベースを作成する必要があるように見えます。とにかく周りにいるのだろうかと思います。既存のDjangoプロジェクトにGeoDjangoを統合

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

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

しかし、私はsyncdbの実行を実行したとき、私はこのエラーを得た:私は私のデシベルの設定を変更せずに、私のアプリのmodels.pyの一つにこれを追加しようとしました。今思い出すと

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の拡張であるあなたは、設定でDBドライバを変更空間テンプレートを使用して新しいDBを作成し、新しいDBへデータを移行することができるように(南はこれに最適です)。それ自身では、geodjangoはDBの内部メソッドに大きく依存しています。残念ながら、通常のdbでは使用できませんでした。

他の方法 - あなたはdjangoのmulti-db能力を利用することができ、geodjangoモデル用の追加のデータベースを作成できます。

+1

南を使用していない場合は、開始する必要があります。特に、バージョン管理ツールを使用して開発する場合。 –

1

設定ファイルのデータベース拡張子を変更していないため、エラーが発生しているようです。技術的には、空間テンプレートを使用して新しいデータベースを作成する必要はありません。既存のデータベースでPostGISスクリプトを実行するだけで、すべての地理空間品物を取得できます。いつものように、これを行う前に既存のデータベースをバックアップする必要があります。

0

私は100%ではありませんが、postgis.sqlとspatial_ref_sys.sqlを既存のデータベースにパイプし、テーブルにアクセス許可を与え、db設定を "django.contrib.gis.db"に変更することができると思います.backends.postgis "となります。

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

(あなたはもちろんのDEPSをインストールした後)私はあなたが見つけるものを見るために興味があると思います。注意してください、postgisのインストールはいくつかの文字を構築することができますが、あまりそれを構築したくない。

関連する問題