У меня есть ОПРС класс модели, как показано ниже:Как обновить одно свойство для нескольких объектов NDB?
class Contest(ndb.Model):
end_date = ndb.DateProperty(required=True, indexed=True)
ended = ndb.BooleanProperty(required=False, indexed=True)
...
у меня будет ежедневно хроны, чтобы отметить конкурсы с прошедшим end_date
с ended
равным True
. Я написал следующий код, чтобы сделать это:
contests = Contest.query()
current_datetime = datetime.datetime.utcnow()
today = datetime.date(current_datetime.year, current_datetime.month, current_datetime.day)
contests = contests.filter(Contest.end_date < today)
contests = contests.filter(Contest.ended == False)
contests = contests.fetch(limit=10)
for contest in contests:
contest.ended = True
ndb.put_multi(contests)
Но мне не нравится это, потому что я должен прочитать все объекты просто обновить одно значение. Есть ли способ изменить его, чтобы читать keys_only
?
Спасибо, Игорь. Означает ли это, что мой подход является лучшим (с точки зрения количества операций чтения/записи)? –
Да, это выглядит как оптимальный –