11

我正在尝试为用 rails 编写的应用程序构建用户管理界面,为此我使用 django。我已经拥有来自 rails 应用程序的旧数据库,其中包含我要管理的内容,对于这个新的 django 应用程序的用户管理,我想使用 django-admin。但我不想改变我拥有的遗留数据库的结构。做的时候,syncdb,看到django创建了legacy数据库下的所有表,这不是我想要的。我现在所做的是,我在 settings.py 上定义了多个数据库,旧数据库是非默认数据库。这样做 django 在默认数据库上创建了所有用户/身份验证相关的表,这防止了遗留数据库的结构被改变。但我想知道是否有其他更好的方法,我可以在哪里做类似的事情,

谢谢。

4

2 回答 2

6

您谈论身份验证表。您可以声明 2 个数据库,您的 django 应用程序的主数据库(“默认”)将仅包含 django.contrib.auth.models 模型。

你的其他人将被检查。您将在生成的模型的管理员中设置数据库名称,它应该可以神奇地工作。

这里如何处理多个和配置数据库:https ://docs.djangoproject.com/en/dev/topics/db/multi-db/

如何指定 ModelAdmin 类来处理多个数据库:https ://docs.djangoproject.com/en/dev/topics/db/multi-db/#exposing-multiple-databases-in-django-s-admin-interface

于 2012-04-23T07:27:01.630 回答
2

您不需要创建第二个数据库。Django 允许您从现有表生成模型。该文档有一个集成现有数据库的方法:https ://docs.djangoproject.com/en/dev/howto/legacy-databases/

总之,使用inspectdb管理命令让 Django 为您提供基于现有数据库的模型。对于特定于 Django 的模型,例如权限和内容类型,您仍然需要同步数据库。

于 2012-04-23T07:11:29.670 回答