Mongoengine Document.update()示例

Dio*_*lor 4 mongoengine

假设Venue是:

from mongoengine import *
from mongoengine_extras.fields import  AutoSlugField
class Venue(Document):
    name = StringField(required=True)
    venue_slug = AutoSlugField()
Run Code Online (Sandbox Code Playgroud)

我想根据名称更新所有的venue_slug字段.我尝试:

for v in Venue.objects():
    v(venue_slug = str(v.name)).update()
Run Code Online (Sandbox Code Playgroud)

但我得到:

v(venue_slug = str(v.name)).update()
TypeError: Error when calling the metaclass bases
'Venue' object is not callable
Run Code Online (Sandbox Code Playgroud)

我的更新功能是否正确?如果您不熟悉,AutoSlugField()可以为StringField()更新编写示例吗?

tbi*_*icr 9

你的代码不正确.尝试:

for v in Venue.objects():
    v.update(set__venue_slug=str(v.name))
Run Code Online (Sandbox Code Playgroud)

请参阅文档:http://docs.mongoengine.org/guide/querying.html#atomic-updates.

  • 由于设置了默认操作,因此这里也可以省略`set__`. (7认同)