无法在save()上附加EmbeddedDocument

2024-04-25 14:31:01 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我的模型:

class Subscriber(Document):
  service = StringField()
  history = EmbeddedDocumentListField('SubscriberHistory')

  def __str__(self):
      return self.service

class SubscriberHistory(EmbeddedDocument):
  action = StringField()
  content = DictField()
  created_at = DateTimeField(required=True, default=datetime.utcnow)

  def __str__(self):
    return self.action

下面是代码,我试图将嵌入的内容保存到我的文档中:

subscriber_history = SubscriberHistory()
subscriber_history.action = 'inbound',
subscriber_history.content = event
self.subscriber.history.append(subscriber_history)
self.subscriber.save()

一旦我运行self.subscriber.save(),我就会得到以下错误:

 File "/foo/bar/env/lib/python3.5/site-packages/mongoengine/base/fields.py", line 415, in validate
 self.error('Invalid %s item (%s)' % (field_class, value),
 TypeError: __repr__ returned non-string (type tuple)

我的代码是正确的(正如我在mongoengine文档中读到的),但是它不起作用。有什么想法吗


Tags: 代码文档selfreturnsavedefserviceaction
1条回答
网友
1楼 · 发布于 2024-04-25 14:31:01

首次保存文档时,订户文档makehistory等于“=”并带有列表

subscriber.history = [subscriber_history]
subscriber.save()

稍后,当您需要添加更多的历史记录时,您将执行更新操作/查询,而不会附加到mongo列表字段

相关问题 更多 >