0

ある種のタグ付け機能をアプリに実装したいと思います。こんなことしたい…

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

2つ以上のタグがある検索を取得したとします。例えば。「レストラン」と「メキシコ」。

ここで、タグが指定されたALL(この場合は2)を持つアイテムを取得したいと思います。

それ、どうやったら出来るの?それとも、私が欲しいものを実装するためのより良い方法はありますか?

4

2 に答える 2

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 に答える
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.get(prof.data_list)は、キーがdata_list属性にあるすべてのデータエンティティを取得します

于 2011-01-20T04:50:47.717 に答える