首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Django中,多租户的最佳解决方案是什么?

在Django中,多租户的最佳解决方案是什么?
EN

Stack Overflow用户
提问于 2014-06-17 04:00:08
回答 1查看 655关注 0票数 3

我正在Django开发一个物业管理应用程序,最终会有多家公司,每个公司都有多个用户。我想让每个公司都有自己的道路。例如,mysite.com/company1/property/1/

最后,尽管我想把来自不同公司的条目集中到一个站点上--所以我想把所有的东西都保存在一个数据库中。

我能想到这样做的一种方法是建立一个公司模型,然后让每个属性都有一个ForeignKey for Company。但是,我不知道如何最好地将视图编码为只显示或修改当前公司的视图。

做这件事最好的方法是什么?

编辑:理想情况下,我希望创建一个视图/助手方法,该方法执行一个查询,该查询将结果属性限制为公司,然后将查询集和请求传递给另一个视图。我想要一个类似于:mysite.com/company1/listproperties的URL结构。因此,这个函数将属性限制为Company1,然后我希望使用URL的第二部分来确定要使用的视图(listProperties,searchProperties),并将剩下的作为参数传递。但是,我不知道如何编码这个第一个过滤视图和URL处理。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-17 06:06:29

你这里有几件事要问。1:如何建模模型之间的关系;2:如何显示单个公司的视图

对于第一个问题,Django在用关系进行数据建模时处理类似的问题。以下是关系文档教程:https://docs.djangoproject.com/en/dev/topics/db/models/#relationships

在您的示例中,属性到公司的关系是“多对一”,这意味着一个公司有许多属性,但是一个属性只有一个公司。在Django(我给您的链接)中,通常所做的都是模型中的一个外键,即“多”,或者在您的情况下是属性。我会这样做:

代码语言:javascript
运行
复制
class Property(models.Model):
  owner = models.ForeignKey(Company)

这还允许您查询关系,解决第二个问题。

如果我有一个公司c,我可以像这样访问与它相关的所有属性:

代码语言:javascript
运行
复制
c.property_set.all()
# => [Property <MyProperty>, Property <OtherProperty>, ...]

这是在视图中执行的查询,然后传递给模板。

这里有一个Django提供的例子,您可能会发现它非常有用:one/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24255504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档