【问题标题】:How to efficiently update more than one entity at a time on django-nonrel/app engine如何在 django-nonrel/app 引擎上一次有效地更新多个实体
【发布时间】:2011-03-09 04:41:56
【问题描述】:

在应用引擎上的 django-nonrel 上,尝试在 QuerySet 上使用“update”方法会返回 NotImplementedError。在不使用更新的情况下执行以下操作的最有效方法是什么?

goals = Goal.objects.filter(is_active=True).filter(deadline__lte=datetime.now())
goals.update(is_active=False, is_failed=True)

我显然可以遍历目标,一个一个地修改和保存它们,但是当可能有大量需要更改时,这似乎效率极低。有更好的办法吗?

【问题讨论】:

    标签: django google-app-engine django-nonrel


    【解决方案1】:

    django-norel 目前不支持批量放置 - 请参阅 http://www.allbuttonspressed.com/projects/djangoappengine#supported-and-unsupported-features

    它们受 GAE SDK 支持,但是,如下所示:

    from google.appengine.ext import db
    ...
    db.put(list_of_entities)
    

    请记住数据存储调用的限制,特别是 1 兆字节的数据传输上限。

    【讨论】:

    • 好吧,这听起来很合理。不过,有一件事我并不清楚。目前我正在检索一个 django QuerySet。为了让它工作,我是否还必须使用 GAE SDK 检索实体,或者是否有一种简单的方法可以将 QuerySet 转换为 db.put 可以使用的列表?或者,我想,将 django-nonrel 模型实例列表转换为 db.put 可以接受的东西?
    • @Yual django-nonrel 真的返回 db.Model 实例吗?这似乎不太可能!
    • 你是对的。我在想 App Engine Helper (code.google.com/p/google-app-engine-django)。
    • 那么,这是否意味着我不得不退回到使用 GAE SDK 来检索实体,或者是否有其他方法可以使用 django 模型来解决这个问题?
    猜你喜欢
    • 2013-08-01
    • 2015-11-05
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2011-07-06
    • 1970-01-01
    相关资源
    最近更新 更多