0

태그 검색을위한 쿼리를 만들려고합니다.
태그 : 얼마나 많은 태그
질문을 하심을 뜻 태그 전직의 배열을 [ 'foo는', '~이', '똥'이 방법은 3 개 태그를 사용할 수 있습니다어떻게 쿼리 ndb.AND 조건을 더 똑똑하게 만들 수 있습니까?

def queryByTags(cls, tags, q): 

     def one(): 
      qry = models.Card.query(models.Card.tags_value == q[0]) 
      return qry 

     def two(): 
      qry = models.Card.query(ndb.AND(models.Card.tags_value == q[0], 
               models.Card.tags_value == q[1])) 
      return qry 

     def three(): 
      qry = models.Card.query(ndb.AND(models.Card.tags_value == q[0], 
               models.Card.tags_value == q[1], 
               models.Card.tags_value == q[2])) 
      return qry 

     tags_len = {1: one, 
        2: two, 
        3: three, 
        } 

     return tags_len[tags]() 

.. 코드를 직접 복사하여 7,8,9까지 확장 할 수 있습니다.
매우 슬픈 방법입니다 ...
스마트 방법이 있습니까? 의사 파이썬 - NDB에서

답변

1

(I 내 코드를 실행하지 않았지만, 당신이 그것을 얻을 것이다) 나는 방법이해야 할 것이라고 말할 것입니다 :

cards_count = Card.query().filter(tags_value==q[0])\ 
    .filter(tags_value==q[1])\ 
    .filter(tags_value==q[2]).count() 

경우 또는를 반복하는 동적 배열 (알 길이 Q의 값)

cards_count = Card.query() 
for value in q: 
    q = q.filter(tags_value==value) 
cards_count = q.count() 
+0

QRY = web_models.Card.query() : QRY = qry.filter (web_models.Card.tags_value == 값) 완벽했다. 신속한 응답과 답변 주셔서 대단히 감사합니다. – tknv

관련 문제