这是一个数据库模型设计问题。假设我正在设计一个类似于Slack的应用程序。Slack有多个组织,在每个组织中,只有该组织才能访问某些对象(例如聊天记录、文件等)。在Django中,设置这些按组织分配的对象的最佳方法是什么?
一种简单的解决方案是为每个对象附加一个外键。像这样:
一种简单的解决方案是为每个对象附加一个外键。像这样:
class Organization(models.Model):
# ...
class File(models.Model):
organization = models.ForeignKey(
'Organization',
on_delete=models.CASCADE,
)
# ...
class ChatThread(models.Model):
organization = models.ForeignKey(
'Organization',
on_delete=models.CASCADE,
)
# ...
但是如果我们这样做,我们需要在organization
上加上索引,由于有很多这样的每个组织对象,这似乎有点浪费。
是否有更清晰的设计方式?
文件
与某个组织
相关联,并使用ForeignKey/ManyToMany来关联它们是我能想到的最好的方法。 - sgauri