6

複数のアプリを含む Django プロジェクトがあります。それらはすべて とデータベースを共有しengine = django.db.backends.postgresql_psycopg2ます。現在、いくつかの機能が必要でGeoDjangoあり、既存のプロジェクトに統合することにしました。チュートリアルを読んだところ、GeoDjango 用に別の空間データベースを作成する必要があるようです。とにかく周りにいるのだろうか。データベース設定を変更せずに、これをアプリのmodels.pyの1つに追加しようとしました:

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)
4

4 に答える 4

2

実際、私が思い出したように、django.contrib.gis.db.backends.postgis は postgresql_psycopg2 の拡張機能であるため、設定で db ドライバーを変更し、空間テンプレートを使用して新しい db を作成し、データを新しい db に移行できます (南はこれに最適です) . geodjango 自体は DB の内部メソッドに大きく依存しているため、残念ながら、通常の db では使用できませんでした。

別の方法 - django のmulti-db機能を利用して、geodjango モデル用に追加の db を作成することもできます。

于 2011-07-03T16:56:23.097 に答える
1

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

于 2011-07-18T19:06:42.410 に答える
0

私は100%ではありませんが、postgis.sqlとspatial_ref_sys.sqlを既存のデータベースにパイプし、テーブルに権限を付与し、db設定を「django.contrib.gis.db.backends.postgis」に変更できると思います"。(もちろん、depsをインストールした後)

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

あなたが見つけたものを見てみたいと思います。注意してください、postgis のインストールはいくつかのキャラクターを構築できますが、構築しすぎないように注意してください。

于 2011-07-18T22:02:48.910 に答える