我正在开发一个在 Google 的 AppEngine 上运行的 django-nonrel 项目。我想为游戏创建一个模型,其中包含所有运动通常共有的细节——即比赛时间、状态、位置等。然后我为 GameBasketball、GameBaseball 等建模了特定的类,这些类继承自基类。
但是,如果我想在某一天检索所有游戏之类的东西,这会产生一个问题:
Game.objects.filter(gametime=mydate)
这将返回一个错误:
DatabaseError: Multi-table inheritance is not supported by non-relational DBs.
我知道 AppEngine 不支持 JOIN,因此失败是有道理的。但我不确定如何在非关系环境中正确解决这个问题。我尝试过的一个解决方案是将 Game 转换为抽象基类,虽然这允许我以一种很好的方式对数据进行建模 - 它仍然无法解决上述用例,因为它无法获取抽象对象基类。
这里唯一的解决方案是将所有可能的运动的所有数据(并且只将与特定运动无关的字段保留为空)放在游戏模型中,还是有更优雅的方法来解决这个问题?
编辑:我更感兴趣的是了解在任何 noSQL 设置中处理此类问题的正确方法,而不是专门在 AppEngine 上。因此,即使您的答案不是 GAE 特定的,也请随时回复!