2016-07-31 5 views
0

Вот мои модели:Невозможно добавить EmbeddedDocument на Save()

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 документы), но он выиграл Не работай. Есть идеи?

ответ

1

При первом сохранении документа, абонент документа, сделать историю равно «=» со списком

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

Позже, когда вам нужно добавить больше историй, вы делаете операцию обновления/запрос, никогда не добавляйте в поле списка монго.