2012-04-23 35 views
6

Tôi đang cố gắng xây dựng giao diện quản lý người dùng cho một ứng dụng được viết bằng đường ray, tôi đang sử dụng django cho mục đích này. Tôi đã có cơ sở dữ liệu cũ từ ứng dụng đường ray, chứa nội dung mà tôi sẽ quản lý và quản lý người dùng trên ứng dụng django mới này, tôi muốn sử dụng django-admin. Nhưng tôi không muốn thay đổi cấu trúc của cơ sở dữ liệu cũ mà tôi có. Khi làm, syncdb, tôi thấy rằng django tạo ra tất cả các bảng dưới cơ sở dữ liệu di sản, mà không phải là những gì tôi muốn. Những gì tôi đã làm bây giờ là, tôi đã định nghĩa nhiều cơ sở dữ liệu trên settings.py, cơ sở dữ liệu kế thừa là không mặc định. Làm như vậy django tạo tất cả các bảng liên quan đến người dùng/auth trên cơ sở dữ liệu mặc định, ngăn chặn cấu trúc của cơ sở dữ liệu cũ bị thay đổi. Nhưng tôi muốn biết nếu có cách nào khác tốt hơn, nơi tôi có thể làm một cái gì đó như, cho người dùng, auth, phiên vv sử dụng cơ sở dữ liệu A và cho các nội dung khác sử dụng cơ sở dữ liệu B (cơ sở dữ liệu cũ).có một cơ sở dữ liệu riêng biệt cho django-admin trong django

Cảm ơn.

Trả lời

4

Bạn nói về bảng Xác thực. Bạn có thể khai báo 2 cơ sở dữ liệu, cơ sở dữ liệu chính ('mặc định') của ứng dụng django của bạn sẽ chỉ chứa các mô hình django.contrib.auth.models.

Các thiết bị khác của bạn sẽ được kiểm tra. Bạn sẽ đặt tên cơ sở dữ liệu trong quản trị viên của mô hình được tạo và nó sẽ hoạt động một cách kỳ diệu.

đây làm thế nào để xử lý nhiều và cấu hình db: https://docs.djangoproject.com/en/dev/topics/db/multi-db/

Làm thế nào bạn chỉ định lớp ModelAdmin của bạn để xử lý nhiều cơ sở dữ liệu: https://docs.djangoproject.com/en/dev/topics/db/multi-db/#exposing-multiple-databases-in-django-s-admin-interface

+0

Vâng, đây là những gì tôi đang làm và cho đến nay nó đã được làm việc tốt. Chỉ muốn biết nếu những gì tôi đang làm là đúng cách để làm điều đó. Nhìn xa hơn về ModelAdmin! Cảm ơn! – Gaumire

+0

Không có cách nào tốt hơn nếu bạn muốn xử lý sự cho phép. Nếu bạn không quan tâm đến quyền, bạn có thể muốn tạo userbackend như thế này: http://stackoverflow.com/a/1073878/267364 – christophe31

2

Bạn không cần tạo cơ sở dữ liệu thứ hai. Django cho phép bạn tạo các mô hình từ các bảng hiện có. Tài liệu hướng dẫn có cách thực hiện để tích hợp cơ sở dữ liệu hiện có: https://docs.djangoproject.com/en/dev/howto/legacy-databases/

Tóm tắt, sử dụng lệnh quản lýđể Django cung cấp cho bạn mô hình dựa trên cơ sở dữ liệu hiện có. Bạn vẫn sẽ cần phải syncdb cho các mô hình cụ thể Django như quyền truy cập và các loại nội dung.

+0

Vâng, tôi đã tạo ra các mô hình từ cơ sở dữ liệu hiện có và đã sử dụng những mô hình trong các ứng dụng tương ứng để hiển thị những nội dung đó. Nhưng tôi vẫn cần một hệ thống xác thực cho ứng dụng django này, liệu django có cho phép tôi sử dụng các mô hình cơ sở dữ liệu cũ (trong auth của django-admin), mà không làm thay đổi cấu trúc hiện tại? – Gaumire

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