gpt4 book ai didi

django - Django 中的 Expando 模型

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:54 25 4
gpt4 key购买 nike

是否可以像 Google App Engine 那样在 Django 中实现“expando”模型?我在 github 上找到了一个名为 django-expando 的 django 应用程序,但它仍处于早期阶段。

最佳答案

这是可能的,但这将是一场史诗级的大乱斗。 GAE 使用一种不同的数据库设计,称为基于列的数据库,而 Django ORM 旨在与关系数据库链接。由于从技术上讲,GAE 中的所有内容都存储在一个没有模式的非常大的表中(这就是为什么您不必为 GAE 应用程序 syncdb),添加任意字段很容易。在关系数据库中,每个表仅存储一种数据(通常)并且具有固定的架构,任意字段并不那么容易。

一种可能的实现方法是为 expando 属性创建一个新模型或表,其中存储表名、对象 ID 和用于腌制数据的 TextField,然后拥有所有 expando 模型从覆盖 __setattr____getattr__ 方法的子类继承,这将自动在此表中创建一个新行。但是,这有几个主要问题:

  • 首先,这是一种廉价的 hack,并且违背了关系数据库的原则。
  • 其次,如果不进行更多的黑客攻击,就不可能查询这些 expando 字段,即便如此,速度也会慢得离谱。

我的建议是找到一种方法来设计您的数据库结构,这样您就不需要 expando 模型。

关于django - Django 中的 Expando 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2182724/

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