加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 23:32:39 所属栏目:Python 来源:网络整理
导读:这是一个数据库模型设计问题.假设我正在设计像Slack这样的应用程序. Slack有多个组织,每个组织内都有对象,只有该组织才能访问(例如,聊天记录,文件等).在Django中设置这些每个组织对象的最佳方法是什么? 一个简单的解决方案是将ForeignKey附加到这些对象中的
这是一个数据库模型设计问题.假设我正在设计像Slack这样的应用程序. Slack有多个组织,每个组织内都有对象,只有该组织才能访问(例如,聊天记录,文件等).在Django中设置这些每个组织对象的最佳方法是什么?

一个简单的解决方案是将ForeignKey附加到这些对象中的每一个.像这样:

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

class File(models.Model):
    organization = models.ForeignKey(
        'Organization',on_delete=models.CASCADE,)
    # ...

class ChatThread(models.Model):
    organization = models.ForeignKey(
        'Organization',)
    # ...

但是如果我们这样做,我们需要在组织上放一个索引,因为有很多这样的每个组织对象,所以看起来有点浪费.

有没有更简洁的设计方法?

解决方法

我认为你的方法和它需要的一样好.在索引组织列方面,您可以使用db_index = False来禁用索引的创建.

如果要抽象组织字段并在所有组织对象上使用某些方法,则可以使用如下的抽象模型:

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

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

    class Meta:
        abstract = True

class File(OrganizationModel):
    # ...

class ChatThread(OrganizationModel):
    # ...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读