У меня есть объект со свойством selfreferency, и я хотел выполнить поиск с условием WHERE для ключа поля selfref.Мое намерение состоит в том, чтобы уменьшить количество обращений к БД путем создания списка ключей, а затем перебора одной и той же сущности для создания вложенного списка.Я использую этот список, чтобы нажать memcache.get_multi () для кэшированной словарной версии наборов результатов, которые я хочу вернуть.Вот сокращенная версия права:
class Link(db.Model):
member = db.ReferenceProperty(Member)
url = db.TextProperty()
title = db.StringProperty()
category =db.SelfReferenceProperty()
Я создал словарь ключей категории, основанный на другой сущности, в которой хранится информация о доступе.Что я хочу сделать, это что-то вроде:
for categoryKey in accessDict:
categoryDBKey = db.Key(categoryKey)
q = db.GqlQuery('SELECT __key__ FROM Link WHERE category.key() = :1',categoryDBKey )
for qItem in q:
cacheList.append('Link_' + str(qItem))
dataCache = memcache.get_multi(cacheList)
Но я получаю ошибку "BadQueryError: Parse Error: Invalid WHERE Condition".
Я знаю, что могупросто передайте всю сущность категории в:
for categoryKey in accessDict:
category = db.ket(db.Key(categoryKey))
q = db.GqlQuery('SELECT __key__ FROM Link WHERE category = :1',category)
, но похоже, что вы потеряли RPC, если у меня уже есть значение ключа для категории, по которой я хочу фильтровать.
Есть ли способ использовать условие WHERE для ключа referencyproperty?
Спасибо