Vorrei aggiungere un nuovo ListField EmbeddedDocument a un documento ListField EmbeddedDocument esistente. In altre parole, aggiunge un nuovo documento all'elenco che appartiene a un documento in elenco.Mongoengine: come aggiungere un nuovo documento a un documento ListField incorporato?
il mio modello: Un post può contenere diversi commenti, ogni commento può avere diverse piace questo:
class Post(Document):
txt = StringField()
comments = ListField(EmbeddedDocumentField(Comment))
class Comment(EmbeddedDocument):
comment = StringField()
comment_id = ObjectIdField()
likes = ListField(EmbeddedDocumentField(Like))
class Like(EmbeddedDocument):
user = ReferenceField(User)
date = DateTimeField(default=datetime.utcnow,required=True)
My Code: (non funziona 'append' esiste comando dosen't, solo 'set' esiste)
def appendNewLike():
user = {..}
target = ObjectId(commentId)
newLike = Like(user=user)
Product.objects(comments__comment_id=target).update(append_comments__S__likes=newLike)
La soluzione ideale sarebbe qualcosa di simile:
def appendNewLike():
user = {..}
target = ObjectId(commentId)
newLike = Like(user=user)
Product.objects(comments__comment_id=target).comments.likes.append(newLike)
Commenti? Suggerimenti?
Grazie, $ push funziona! – rat
Ciao, push non funziona finché non chiamo reload() con istanza di classe. like product = Product() Product.objects (comments__comment_id = target) .update ( push__comments__S__likes = newLike) product.reload() – Shashank