python - 如何在石墨烯 mongo python 中更新 EmbeddedDocument 的字段
问题描述
我正在尝试更新 IgThread EmbeddedDocument 的一个字段,并出现错误:
'IgThread' object has no attribute 'save'
我尝试了一些奇怪的解决方案,但都不起作用。当前代码中存在错误
突变:
def mutate(self, _, **kwargs):
ig_pk = kwargs['ig_pk']
thread_input = kwargs['ig_thread']
lead_ = Lead.objects(ig__pk=ig_pk).first()
for thread in lead_.messages.ig:
Lead.objects(
ig__pk=ig_pk,
messages__ig__thread_id=thread_input.thread_id,
).update(
push_all__messages__ig__S__messages=new_messages,
)
thread.last_activity_at = thread_input.last_activity_at
thread.save()
家长:
class Lead(Document):
id = fields.ObjectIdField()
messages = fields.EmbeddedDocumentField(Messages)
嵌套的嵌入式文档:
class Messages(EmbeddedDocument):
ig = fields.EmbeddedDocumentListField(IgThread)
更深层次的:
class IgThread(EmbeddedDocument):
thread_id = fields.StringField()
last_activity_at = fields.StringField()
我想更新 last_activity_at 请帮忙,我必须修复那个错误,在办公室里没有人能帮我解决这个问题:<
解决方案
解决了!很容易...
def mutate(self, _, **kwargs):
ig_pk = kwargs['ig_pk']
thread_input = kwargs['ig_thread']
lead_ = Lead.objects(ig__pk=ig_pk).first()
for thread in lead_.messages.ig:
Lead.objects(
ig__pk=ig_pk,
messages__ig__thread_id=thread_input.thread_id,
).update(
push_all__messages__ig__S__messages=new_messages,
)
lead_ = Lead.objects(ig__pk=ig_pk).first() <--------
thread.last_activity_at = thread_input.last_activity_at
lead_.save() <--------
推荐阅读
- r - R 读取 .app 文件的路径作为 macOS 上的文件夹
- vue.js - 如何在 Vue 2 中等待用户输入
- python - Depends 和 FastAPI 中的类实例
- go - vscode-go 中的选项formatting.local 是否有效?
- javascript - 每 5 行重复一次跳过
- python - 按 Pandas 中不同时间范围的列表分组
- python - 循环数据框python中的列
- html - React:: 输入键盘适用于桌面,但不适用于移动设备
- linux - 无法访问汇编函数的参数
- jhipster - “客户端注册 ID 需要授权:oidc”访问令牌不可用