2013-11-12 1 views
1

Предполагая, что место проведения:Mongoengine Document.update() Пример

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

Я хочу, чтобы обновить все мои venue_slug поля на основе имени. Я стараюсь:

for v in Venue.objects(): 
    v(venue_slug = str(v.name)).update() 

Но я получаю:

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

Является ли моя функция обновления правильно? Если вы не знакомы с AutoSlugField(), можете ли вы написать пример для обновления StringField()?

ответ

4

Ваш код неправильный. Попыться:

for v in Venue.objects(): 
    v.update(set__venue_slug=str(v.name)) 

См. Документацию: http://docs.mongoengine.org/guide/querying.html#atomic-updates.

+4

'set__' также можно опустить здесь, так как установлена ​​операция по умолчанию. –

+0

@NicholasRempel, это уже не так. Я только что получил сообщение о том, что мне нужно предоставить операцию – Chris

+0

Спасибо за обновление. Работает ли он с 'set__'? –

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