【发布时间】:2022-07-21 21:21:16
【问题描述】:
我目前正在 Django 中构建一个工具,用于管理工程部门内的设计信息。这个想法是让所有项目都可以访问一个通用的项目目录。但是,这些项目将根据用户组受到限制。 对于每个项目,您可以从目录中导入项目并在项目中更改它们。要求每个项目必须链接到不同的数据库。
我不完全确定如何解决这个问题。根据我的阅读,我想出的解决方案是拥有多个 django 应用程序。一个代表项目的公共目录(链接到它自己的数据库),然后是每个项目的应用程序(它可以从自己的数据库中写入和读取,但它也可以另外从公共项目目录数据库中读取)。这样,我可以限制哪些用户可以访问哪些数据库/项目。但是,此解决方案的问题在于它不是 DRY。所有项目看起来都一样:相同的模型、相同的表格、相同的模板。它们只是链接到不同的数据库,我不知道如何以聪明的方式做到这一点(没有复制粘贴整个文件,因为我认为管理这会很痛苦)。
我认为可以通过在执行查询(使用 using 属性)时根据经过身份验证的用户组更改数据库标签来避免这种情况。这样做的问题是用户可以访问多个项目。所以,我又不知所措了。
如果您提供任何意见/经验,我将不胜感激。
【问题讨论】:
-
为什么需要很多数据库?如果每个项目的所有内容都相同,只需添加父模型“项目”并基于 ForeginKey 的“项目”链接中的项目您需要的所有模型。维护一个数据库比许多数据库容易得多:)
标签: python django database reusability