2013-06-08 3 views
4

Я пытаюсь удалить элемент списка типа long из списка db.ListProperty (long).db.put() не работает должным образом

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 
     bla 

    def _removeLotFromAuction(self,lot): 
     auction = Auction.get_by_id(long(lot.auctionID)) 
     logging.info(len(auction.lots))#1 
     auction.lots.remove(long(lot.lotID)) 
     auction.put() 
     logging.info(len(auction.lots))#0 

Я тогда ссылаться на ту же модель (аукцион) позже в тот же запрос вызова, но он не появляется Model.put() работает, потому что она возвращается после logging.info (LEN (auction.lots) возвращает 1

+0

Я понял, если я объявляю d дополнительный auction.put() под другим, который он работает. Запрос заканчивается, и сумма списка верна. Я понятия не имею, почему это изменило бы ситуацию. – zanemx

+1

Вы должны поместить список, чтобы обновить список (объект) в хранилище данных. Кроме того, вы обновляете список, а не хранилище данных. – voscausa

+0

db.ListProperty представляет собой список типов python, а не сущность. Поэтому размещение списка не будет работать, если я не пропущу что-то. – zanemx

ответ

3

Это из-за возможную последовательность (результаты, которые вы видите на сервере разработок моделируются в наихудшем случае, но вы должны разработать для этого случая).

в статье structuring data for strong consistency есть некоторые советы по работе с это

+0

Я вижу вашу точку здесь и благодарю вас. Но я не вижу, как это относится к моей модели. У меня нет или нет необходимости в запросе предка. Если просто с использованием ключа предка не будет применяться сильная согласованность. – zanemx

+0

Это действительно так, как подтверждает эта статья. –

Смежные вопросы