首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django中的Expando模型

Django中的Expando模型
EN

Stack Overflow用户
提问于 2010-02-02 16:35:50
回答 1查看 551关注 0票数 3

有没有可能像Google App Engine那样,在Django中实现'expando‘模型?我在github上发现了一个名为django-expando的django应用程序,但它还处于早期阶段。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-03 00:12:19

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

一种可能的实现方式是为扩展多个属性创建一个新模型或表,这些属性存储表名、对象ID和用于pickled数据的TextField,然后让所有扩展多个模型从一个子类继承,这个子类覆盖了将在该表中自动创建新行的__setattr____getattr__方法。然而,这有几个主要的问题:

  • 首先,这是一种廉价的技巧,并且与关系databases.
  • Second,的原则背道而驰如果没有更多的技巧,查询这些
    • 字段是不可能的,即便如此,它也会慢得离谱。

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

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

https://stackoverflow.com/questions/2182724

复制
相关文章

相似问题

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