Если вы структурируете свои данные следующим образом:
class Product(db.Model):
# ...
class UserInfo(db.Model):
# ...
class ProductList(db.Model):
owner = db.ReferenceProperty(UserInfo)
products = db.ListProperty(db.Key)
Затем вы можете получить товары, отсутствующие в списке, например:
product_keys = set(Product.all(keys_only=True).fetch(1000))
product_list = ProductList.get_by_id(product_list_id)
missing_products = product_keys - set(product_list.products)
missing_products
- это набор ключей, которые вы можете передать db.get
для получения соответствующих сущностей продукта.
Это, конечно, потребует извлечения всего списка продуктов, но это именно то, что должна была бы сделать реляционная база данных, чтобы удовлетворить запрос.