我正在尝试为使用rails编写的应用程序构建用户管理界面,我正在使用django。我已经拥有rails应用程序中的遗留数据库,其中包含我将要管理的内容,并且对于这个新的django应用程序的用户管理,我想使用django-admin。但我不想改变我拥有的遗留数据库的结构。在做syncdb时,我看到django在遗留数据库下创建了所有表,这不是我想要的。我现在所做的是,我在settings.py上定义了多个数据库,遗留数据库是非默认数据库。这样做django在默认数据库上创建了所有与user / auth相关的表,这阻止了旧数据库的结构被更改。但我想知道是否还有其他更好的方法,我可以为用户,身份验证,会话等使用数据库A和其他内容使用数据库B(遗留数据库)。
感谢。
答案 0 :(得分:5)
您谈论身份验证表。您可以声明2个数据库,django应用程序的主数据库('default')将只包含django.contrib.auth.models模型。
您的其他人将接受检查。您将在生成的模型的管理员中设置数据库名称,它应该神奇地工作。
这里如何处理多个并配置db: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
答案 1 :(得分:2)
您无需创建第二个数据库。 Django允许您从现有表生成模型。该文档包含了集成现有数据库的方法:https://docs.djangoproject.com/en/dev/howto/legacy-databases/
总结一下,使用inspectdb
管理命令让Django根据现有数据库为您提供模型。您仍然需要syncdb用于特定于Django的模型,例如权限和内容类型。