包装器google.appengine.ext.db.Model => django.db.models.Model

时间:2009-10-08 10:34:51

标签: django google-app-engine

鉴于gae& django持久层非常相似,我想知道是否有人尝试过创建包装器?说,对于使用django.forms.ModelForm可能很有用。 这有什么根本问题吗?

4 个答案:

答案 0 :(得分:2)

App-engine-helper为此提供了有限的支持,但您仍在处理伪装的App Engine模型。我对Django的模型框架并不是很熟悉,但基本问题是Django的模型框架与关系数据库过于紧密,无法轻松转移到App Engine后端。

您可以使用内置于App Engine SDK中的ModelForms变体 - 有关详细信息,请参阅here

答案 1 :(得分:1)

Django norel是app-engine-helper的更好替代品。它是一个更好的抽象,支持django查询(其中很多 - 没有JOIN支持),foregin密钥(尽管没有ManyToMany关系)。

Django norel支持管理员应用程序(app-engine-patch不支持)。

答案 2 :(得分:0)

什么,你的意思是Google App Engine HelperGoogle App Engine Patch

答案 3 :(得分:0)

Django模型的设计隐含地假设您正在使用关系数据库。遗憾的是,Datastore不支持关系数据库的所有功能。例如,数据存储区中没有等效的连接查询。 General transactions aren't supported either。因此,将数据存储调整为Django模型的替代品将非常困难(如果不是不可能)。

this YouTube video的4:45,Guido Von Rossum简要介绍了如何重新思考设计数据库以适应数据存储模型的方式。好处是你可以很好地扩大规模。在48:30,有人问为什么Datastore API不是设计成更像Django模型。 Guido解释说,Datastore和关系数据库之间的根本区别使得这种做法变得不切实际。 13:20也讨论了这一点。