2016-07-31 19 views
0

Hier sind meine Modelle:Kann nicht anhängen EmbeddedDocument auf 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 

und hier ist der Code, wo ich versuche, den Einbettungs in mein Dokument zu speichern:

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

sobald i laufen self.subscriber.save() ich die folgende Fehlermeldung erhalten:

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) 

Mein Code korrekt ist (wie ich in den mongoengine docs lesen), aber es hat arbeite nicht. Irgendwelche Ideen?

Antwort

1

Wenn Sie zum ersten Mal ein Dokument speichern, das Teilnehmer Dokument, Geschichte machen gleich „=“ mit einer Liste

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

Später, wenn Sie mehr Geschichten hinzufügen müssen, Sie einen Aktualisierungsvorgang/Abfrage machen, Sie niemals an ein Mongo-Listenfeld anhängen.