2016-02-15 6 views
0

У меня есть 3 класса: Documentmongoengine referencefield не обновлял

class Policy(Document): 
    name = StringField(required=True) 

class Group(Documet): 
    # ... 
    policy = ReferenceField('Policy', db_field='policy_id') 

class Item(Document): 
    foo = StringField() 
    group = ReferenceField(Group, db_field='group_id') 

Теперь - когда я установил пункт -> Группа -> отношения политика, все хорошо, пока я не обновить политику.

Я делаю это в коде, который в конечном итоге изменения .name в объекте в Policy типа (не будем называть его х) и запустить x.save()

БД в правильной политике обновляется полностью, ни один из ObjectId с изменение (ни ReferenceField объект)

Но все-таки:

item = Item.objects.get(foo='needed_item') 
policy = item.group.policy 

policy.name содержит старое значение (как если бы она не была обновлена ​​на всех)

У ReferenceField есть инструкция «Обновить» Мне нужно запустить?

ответ

0

Если у вас есть экземпляр, хранящийся в памяти, вам необходимо вызвать метод reload в документе.

+1

Спасибо. Кажется, что это хромает, что каждый раз, когда я обращаюсь к ссылочному полю, мне нужно снова вызвать перезагрузку. Я бы ожидал, что вызов .save поможет разобраться и сделать его грязным ... – Boaz

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