AppEngine Datastore はリスト プロパティにすべての項目を持つエンティティを取得します

StackOverflow https://stackoverflow.com/questions/4631508

質問

アプリに何らかのタグ付け機能を実装したいと考えています。みたいなことをしたいのですが...

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 属性にあるすべてのデータ エンティティを取得します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top