gpt4 book ai didi

django - 在 Django 中设计特定于组织的模型的最佳方法?

转载 作者:行者123 更新时间:2023-12-03 00:08:24 26 4
gpt4 key购买 nike

这是一个数据库模型设计问题。假设我正在设计一个像 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上放置一个索引,并且由于有很多这样的per-Organization对象,所以看起来有点浪费。

是否有更简洁的设计方法?

最佳答案

我认为你的方法已经足够好了。在为组织列建立索引方面,您可以使用db_index=False来禁用索引的创建。

如果您想抽象组织字段并在所有组织对象上使用一些方法,您可以使用如下抽象模型:

class Organization(models.Model):
# ...

class OrganizationModel(models.Model):
organization = models.ForeignKey(
'Organization',
on_delete=models.CASCADE,
db_index=False,
)

class Meta:
abstract = True

class File(OrganizationModel):
# ...

class ChatThread(OrganizationModel):
# ...

关于django - 在 Django 中设计特定于组织的模型的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49339167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com