AppEngine Datastore 获取列表属性中包含所有项目的实体

发布于 2024-10-11 13:50:05 字数 261 浏览 3 评论 0原文

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

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

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

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

我该怎么做?或者有更好的方法来实现我想要的吗?

I want to implement some kind of tagging functionality to my app. I want to do something like...

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

Suppose I get a search that have 2 or more tags. Eg. "restaurant" and "mexican".

Now, I want to get Items that have ALL, in this case 2, given tags.

How do I do that? Or is there a better way to implement what I want?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不念旧人 2024-10-18 13:50:05

我相信您希望将标签存储为“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)))

I believe you want tags to be stored as 'db.ListProperty(db.Category)' and then query them with something like:

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

(Unfortunately I can't find any good documentation for the db.Category type. So I cannot definitively say this is the right way to go.) Also note, that in order to create a db.Category you need to use:

new_item.tags.append(db.Category(unicode(new_tag_text)))
花海 2024-10-18 13:50:05

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

models:

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

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

views:

   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)会获取key在data_list属性中的所有Data实体

use db.ListProperty(db.Key) instead,which stores a list of entity's keys.

models:

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

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

views:

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

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

/// Here data_list stores the keys of Data entity

Data.get(prof.data_list) will get all the Data entities whose key are in the data_list attribute

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文