问题描述
我有以下架构:
class Task(EmbeddedDocument):
description = StringField()
is_finished = BooleanField(default=False)
class Plan(DynamicDocument):
priority = IntField()
tasks = EmbeddedDocumentListField(Task)
然后我从字典创建一个计划实例(最初我是从http请求的json主体获取字典):
body = {"priority": 1,"tasks": [{"description": "do this","is_finished": true}]}
plan = Plan(**body).save()
然后,我尝试更新任务嵌入式文档的description
,同时使其其他字段is_finished
保持不变,同时也使计划的priority
字段保持不变:
new_body = {"tasks": [{"description": "do that"}]}
plan.update(**new_body)
但是,更新后is_finished
的值更改为false
(它是默认值)。
print(plan.to_json())
# prints {"priority": 1,"tasks": [{"description": "do that","is_finished": false}]}
如何在保持未指定的嵌入字段不变的同时更新文档,就像我对主文档上的priority
字段所做的一样?我尝试从嵌入式文档模型中删除默认值,但是如果在更新过程中未指定该字段,则将其完全删除。
解决方法
这将更新特定字段
package
这里,0 是要更新其描述的嵌入式文档(在列表“任务”中)的序数。