有没有可能像Google App Engine那样,在Django中实现'expando‘模型?我在github上发现了一个名为django-expando的django应用程序,但它还处于早期阶段。
发布于 2010-02-03 00:12:19
这是可能的,但它将是一个史诗般的比例。GAE使用一种不同的数据库设计,称为基于列的数据库,Django ORM被设计为与关系数据库链接。由于从技术上讲,GAE中的所有内容都存储在一个没有模式的非常大的表中(这就是为什么您不必为GAE应用程序使用syncdb ),因此添加任意字段很容易。在关系数据库中,每个表(通常)只存储一种数据,并且具有固定的模式,因此任意字段就不那么容易了。
一种可能的实现方式是为扩展多个属性创建一个新模型或表,这些属性存储表名、对象ID和用于pickled数据的TextField,然后让所有扩展多个模型从一个子类继承,这个子类覆盖了将在该表中自动创建新行的__setattr__和__getattr__方法。然而,这有几个主要的问题:
我的建议是找到一种方法来设计你的数据库结构,这样你就不需要扩展模型。
https://stackoverflow.com/questions/2182724
复制相似问题