AppEngine Datastore はリスト プロパティにすべての項目を持つエンティティを取得します
-
08-10-2019 - |
質問
アプリに何らかのタグ付け機能を実装したいと考えています。みたいなことをしたいのですが...
class Item(db.Model):
name = db.StringProperty()
tags = db.ListProperty(str)
2 つ以上のタグが含まれる検索を取得したとします。例えば。「レストラン」と「メキシカン」。
ここで、指定されたタグをすべて (この場合は 2 つ) 持つアイテムを取得したいと考えています。
それ、どうやったら出来るの?それとも、私が望むものを実装するためのより良い方法はありますか?
解決
タグを「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)))
他のヒント
代わりに、エンティティのキーのリストを格納する 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.get(prof.data_list) キーが data_list 属性にあるすべてのデータ エンティティを取得します
所属していません StackOverflow