【问题标题】:having a separate database for django-admin in django在 django 中有一个单独的 django-admin 数据库
【发布时间】:2012-05-03 18:58:08
【问题描述】:

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

谢谢。

【问题讨论】:

  • 您好,我也遇到了同样的问题,想知道您是否还在使用这种方法?你也可以分享使用这个路由器类的代码吗?交易

标签: python django django-admin


【解决方案1】:

您谈论身份验证表。您可以声明 2 个数据库,您的 django 应用程序的主数据库(“默认”)将仅包含 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

【讨论】:

  • 是的,这就是我正在做的事情,到目前为止它运行良好。只是想知道我正在做的事情是否正确。进一步了解 ModelAdmin!谢谢!
  • 如果要处理权限,没有更好的方法。如果您不关心权限,您可能希望创建这样的用户后端:stackoverflow.com/a/1073878/267364
【解决方案2】:

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

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

【讨论】:

  • 是的,我从现有数据库中创建了模型,并在各自的应用程序中使用了这些模型来显示这些内容。但是我仍然需要这个 django 应用程序的身份验证系统,django 是否会让我使用遗留数据库的模型(在 django-admin 的 auth、会话中)而不对现有结构进行任何更改?
猜你喜欢
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 2010-10-13
  • 1970-01-01
  • 2015-07-18
  • 2011-06-22
相关资源
最近更新 更多