这会产生一个问题但是如果我想在某一天检索所有游戏的内容:
Game.objects.filter(gametime=mydate)
这将返回错误:
DatabaseError: multi-table inheritance is not supported by non-relational DBs.
我知道AppEngine不支持JOIN,所以它失败了.但我不确定如何在非关系环境中正确解决这个问题.我尝试过的一个解决方案是将Game变成一个抽象的基类,虽然这允许我以一种很好的方式对数据进行建模 – 它仍然无法解决上面的用例,因为它无法获得抽象的对象基类.
这里唯一的解决方案是将所有可能的运动的所有数据(并且只是将与特定运动无关的字段保留为空)放在游戏模型中,还是有更优雅的方法来解决这个问题?
编辑:
我更感兴趣的是在任何nosql设置中理解处理此类问题的正确方法,而不是特别在AppEngine上.即使您的答案不是GAE特定的,也请随时回复!
但我认为你可以手动设置Django用它的模型继承’sugar’做的同样的事情,并且避免在你自己的代码中进行连接.
例如
class Game(models.Model): gametime = models.DateTimeFIEld() # etcclass GameBasketball(models.Model): game = models.OnetoOneFIEld(Game) basketball_specific_fIEld = models.TextFIEld()
当你创建一个新的GameBasketball来创建相应的Game实例(你可以尝试一个自定义的管理器类)时,你需要一些额外的工作,但之后你至少可以做你想要的,例如
qs = Game.objects.filter(gametime=mydate)qs[0].gamebasketball.basketball_specific_fIEld
django-nonrel和djangoappengine在GitHub上有一个新家:https://github.com/django-nonrel/
我不相信,除了GAE数据存储API本身的速度之外,python框架的选择有很大的不同,或者django-nonrel本身比webapp2慢.
总结以上是内存溢出为你收集整理的Django Nonrel – 使用noSQL解决多表继承问题?全部内容,希望文章能够帮你解决Django Nonrel – 使用noSQL解决多表继承问题?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)