2011-06-25 44 views
5

Tôi có một dự án Django với nhiều ứng dụng. Tất cả đều chia sẻ một db với engine = django.db.backends.postgresql_psycopg2. Bây giờ tôi muốn một số chức năng của GeoDjango và quyết định tôi muốn tích hợp nó vào dự án hiện tại của tôi. Tôi đọc qua hướng dẫn, và có vẻ như tôi phải tạo một cơ sở dữ liệu riêng biệt cho GeoDjango. Tôi tự hỏi liệu có xung quanh không. Tôi đã cố thêm mô hình này vào một trong các mô hình của ứng dụng của tôi mà không thay đổi cài đặt db của tôi:Tích hợp GeoDjango vào dự án Django hiện có

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

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

Nhưng khi tôi chạy syncdb, tôi gặp lỗi này.

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) 

Trả lời

2

Trên thực tế, như tôi nhớ lại, django.contrib.gis.db.backends.postgis là phần mở rộng của postgresql_psycopg2 vì vậy bạn có thể thay đổi db lái xe trong cài đặt, tạo db mới với mẫu không gian và sau đó di chuyển dữ liệu đến db mới (Nam là tuyệt vời cho điều này). Bởi chính nó geodjango là rất phụ thuộc vào phương pháp bên trong DB do đó, không may, bạn không thể sử dụng nó với db thường xuyên.

Cách khác - bạn có thể sử dụng khả năng của django multi-db và tạo thêm db cho các mô hình geodjango.

+1

Nếu bạn không sử dụng miền Nam, bạn cần phải bắt đầu. Đặc biệt nếu bạn phát triển với các công cụ kiểm soát phiên bản. –

1

Lỗi của bạn có vẻ như không đến từ việc thay đổi phần mở rộng cơ sở dữ liệu trong tệp cài đặt của bạn. Bạn không cần phải tạo một cơ sở dữ liệu mới bằng cách sử dụng mẫu không gian, bạn có thể chỉ cần chạy các kịch bản PostGIS trên cơ sở dữ liệu hiện có của mình để có được tất cả các tính năng không gian địa lý. Như mọi khi, bạn nên sao lưu cơ sở dữ liệu hiện có của mình trước khi thực hiện điều này.

0

Tôi không phải 100%, nhưng tôi nghĩ rằng bạn có thể postgis.sql đường ống và spatial_ref_sys.sql vào cơ sở dữ liệu hiện có của bạn, cấp quyền cho các bảng và thay đổi cài đặt db thành "django.contrib.gis.db .backends.postgis ". (Sau khi bạn đã cài đặt DEPS tất nhiên)

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

Tôi muốn được quan tâm để xem những gì bạn tìm thấy. Hãy cẩn thận, cài đặt postgis có thể xây dựng một số ký tự nhưng bạn không muốn nó xây dựng quá nhiều.

Các vấn đề liên quan