同类实体组

时间:2014-09-02 21:01:00

标签: python google-app-engine data-structures google-cloud-datastore app-engine-ndb

让我们举一个例子,我运行一个自动更新帖子的博客。

我想将class(= model)BlogPost的实体保存在两个不同的“组”中,一个名为“FutureBlogPosts”,一个名为“PastBlogPosts”。

这是一个合理的分工,可以让我有效地处理我的博客文章(单独查询等)。

基本上问题是我的模型的“种类”总是“BlogPost”。那么如何将其分成两个不同的组?

以下是我目前发现的选项:

  
      
  • 复制相同的模型类代码两次(一次是FutureBlogPost类,一次是PastBlogPost类(所以它们的种类会不同)) - 看起来非常荒谬。

  •   
  • 将它们放在不同的安慰者(FutureBlogPost,“SomeConstantValue”,BlogPost,#id)下,但这种方法也有其含义(每秒写1次?),整个祖先 - 孩子关系似乎不合适这里。 (如果我选择那个选项,为什么我必须使用“SomeConstantValue”?)

  •   
  • 使用不同的命名空间 - 对于如此简单的分离似乎过于激进

  •   

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

好像我终于找到了相关的文章。

据我了解,将特定类型的所有实体拉出来并按特定属性拉动它们没有任何区别,两者都需要在后台进行相同类型的工作。 (但是,通过特定的全键查询仍然更快)

所以基本上添加一个名为&#34的属性; Type"或者您想用于将特定实体拆分成组的任何其他属性与给予它某种类型一样有用。

在此处阅读更多内容:https://developers.google.com/appengine/articles/storage_breakdown

如您所见,EntitiesByKind和EntitiesByProperty都只是原始密钥的索引表。

最后,答案。

答案 1 :(得分:0)

为什么不在你的" BlogPost"中添加一个布尔值。实体,0如果它过去,1如果它的未来?会让你轻松地分别查询。