我目前正在Django中构建一个工具,用于管理工程部门内的设计信息。这样做的目的是为所有项目提供一个共同的项目目录。然而,这些项目将根据用户组加以限制。对于每个项目,您可以从目录中导入项目并在项目中更改它们。要求每个项目必须链接到不同的数据库。
我不太清楚如何处理这个问题。据我所读,我想出的解决方案是有多个django应用程序。一个是项目的通用目录(链接到自己的数据库),然后是每个项目的应用程序(它可以从自己的数据库中读写,但也可以从公共项目目录数据库中读取)。通过这种方式,我可以限制用户可以访问什么数据库/项目。然而,这个解决方案的问题是它不是干的。所有项目看起来都一样:相同的模型、相同的表单、相同的模板。它们只是链接到不同的数据库,我不知道如何聪明地做到这一点(没有复制粘贴整个文件,因为我认为管理这些文件会很痛苦)。
我认为,在执行查询时(使用using属性)时,可以通过更改数据库标签来避免这种情况,这取决于经过身份验证的用户的组。这样做的问题是用户可以访问多个项目。所以,我又一次不知所措。
发布于 2022-07-21 13:17:25
它期待我,你所需要的是一个单一的应用程序,将适当地管理它的访问。
如果要求有单独的DBs,我不会争辩,但是.在1db中,分离的表总是很小的可能会被接受。
发布于 2022-07-21 13:21:16
Django应用程序不隔离对象,它们是构造代码库的一种方式。这个想法是,应用程序可以在其他项目中重复使用。有一个单独的应用程序为您的项目目录和您的项目是一个好主意,但让他们在一起不是一个问题,如果你有一个小的代码库。
如果我正确理解你的职位,你想要的是不同部门的数据库是分开的。这本质上是一个多租户问题,这本身就是一个大问题,有几种选择:
.filters())过滤部门。这很容易做到,但如果您的代码出错,数据可能会泄露给错误的用户。我会推荐这个作为用例.django-tenants,可以做很多繁重的工作。的支持
https://stackoverflow.com/questions/73066581
复制相似问题