2

ANDOR適切にクエリを作成しているかどうかはわかりません。タグに一致するようにクエリすると、一致する動画がいくつか表示されます。しかし、2番目のクエリを試してみると(ビデオがそれ自体に関連していないことを確認するため)、クエリはすべてのビデオを返します。

更新:問題のタグと同じタグが少なくとも1つある動画を返したいのですvideoが、返されるリストにが含まれていませんvideo。基本的にrelated_videos機能。

from solveforx.lib.moonshots import Video
from google.appengine.ext import ndb

video = Video.query().get()
tags = video.tags or []

for tag in tags:
  print Video.query(Video.tags == tag).count() # returns 1
  print "-------"
  print Video.query(Video.tags == tag and Video.key != video.key) # returns total videos - 1
  print "========"
  # also tried this
  # print Video.query(Video.tags == tag, ndb.AND(Video.key != moonshot.key)).count() # returns 0
  # print Video.query(ndb.AND(ndb.AND(Video.tags == tag), ndb.AND(Video.key != video.key) )).count()

これに関するドキュメントを見てください。ただし、オペレーターがどのように機能しているかはわかりません。

4

2 に答える 2

9

AND少なくとも2つのパラメーターを取ります。やったほうがいい:

Video.query(ndb.AND(Video.tags == tag, Video.key != video.key))

あなたが投稿したリンクから、それを組み合わせる方法についてのより多くの例を見ることができますndb.OR

于 2013-03-26T14:46:49.063 に答える
5

これはうまくいきました:

for tag in tags:
  Video.query(Video.tags == tag, Video.key != video.key)
于 2013-03-26T14:41:26.097 に答える