У меня есть небольшое приложение, где я передаю сообщения между пользователями. Моя модель для сообщения выглядит так
class Message(db.Model):
from = db.UserProperty()
sent_to_users = db.ListProperty(db.Key)
Я отправляю сообщение пользователям, если они в сети, поэтому, когда я обнаруживаю, что пользователь находится в сети, я отправляю любое сообщение, которое ему еще не было отправлено. Я делаю message.sent_to_users.append(user)
в обработчике / chat / присутствии / available . Чтобы указать, что сообщение уже было отправлено на user
Мой вопрос заключается в том, как отфильтровать сообщения, которые уже были отправлены пользователю. В соответствии с разделом фильтр неравенства в запросах a !=
переводится в два запроса для значений больше и меньше, а затем результаты объединяются. Что само собой разумеется, не работает в случае списка ключей. В основном members_not_sent_message = Message.all().filter('sent_to_users !=', available_user).fetch(100)
не работает.
Есть ли способ найти значения, отсутствующие в ListProperty, или мне нужно просмотреть каждый элемент и найти сообщения, которые не были отправлены? Или есть другой дизайн для такой системы, который обходит это ограничение хранилища данных GAE (если оно есть в этом случае)?