0

我想为我的应用程序实现某种标记功能。我想做类似...

class Item(db.Model):
  name = db.StringProperty()
  tags = db.ListProperty(str)

假设我得到一个有 2 个或更多标签的搜索。例如。“餐厅”和“墨西哥”。

现在,我想获取具有所有标签的项目,在本例中为 2。

我怎么做?还是有更好的方法来实现我想要的?

4

2 回答 2

0

使用 db.ListProperty(db.Key) 代替,它存储实体键的列表。

楷模:

 class Profile(db.Model):
 data_list=db.ListProperty(db.Key)

 class Data(db.Model):
 name=db.StringProperty()

意见:

   prof=Profile()
   data=Data.gql("")#The Data entities you want to fetch

   for data in data:
       prof.data_list.append(data)

/// 这里data_list存储了Data实体的key

Data.get(prof.data_list)将获取键在 data_list 属性中的所有 Data 实体

于 2011-01-20T04:50:47.717 回答
0

我相信您希望将标签存储为“db.ListProperty(db.Category)”,然后使用以下内容查询它们:

   return db.Query(Item)\
             .filter('tags = ', expected_tag1)\
             .filter('tags = ', expected_tag2)\
             .order('name')\
             .fetch(256)

(不幸的是,我找不到 db.Category 类型的任何好的文档。所以我不能肯定地说这是正确的方法。)还要注意,为了创建一个 db.Category 你需要使用:

new_item.tags.append(db.Category(unicode(new_tag_text)))
于 2011-01-08T00:34:37.253 回答