我想为我的应用程序实现某种标记功能。我想做类似...
class Item(db.Model):
name = db.StringProperty()
tags = db.ListProperty(str)
假设我得到一个有 2 个或更多标签的搜索。例如。“餐厅”和“墨西哥”。
现在,我想获取具有所有标签的项目,在本例中为 2。
我怎么做?还是有更好的方法来实现我想要的?
我想为我的应用程序实现某种标记功能。我想做类似...
class Item(db.Model):
name = db.StringProperty()
tags = db.ListProperty(str)
假设我得到一个有 2 个或更多标签的搜索。例如。“餐厅”和“墨西哥”。
现在,我想获取具有所有标签的项目,在本例中为 2。
我怎么做?还是有更好的方法来实现我想要的?
使用 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 实体
我相信您希望将标签存储为“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)))