Ich möchte ein neues ListField EmbeddedDocument an ein vorhandenes ListField EmbeddedDocument-Dokument anhängen. Mit anderen Worten: Anfügen eines neuen Dokuments zum Auflisten, das zu einem Dokument in der Liste gehört. Mein ModellMongoengine: Wie füge ich ein neues Dokument an ein Embedded ListField Dokument an?
: A Post mehrere Kommentare enthalten kann, kann jeder Kommentar mehrere Likes haben:
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)
Mein Code: (es funktioniert nicht 'anhängen' Befehl dosen't vorhanden ist, nur 'set' existiert)
def appendNewLike():
user = {..}
target = ObjectId(commentId)
newLike = Like(user=user)
Product.objects(comments__comment_id=target).comments.likes.append(newLike)
Kommentare:
def appendNewLike():
user = {..}
target = ObjectId(commentId)
newLike = Like(user=user)
Product.objects(comments__comment_id=target).update(append_comments__S__likes=newLike)
Ideale Lösung wäre so etwas wie sein? Vorschläge?
Vielen Dank $ push funktioniert! – rat
Hallo, Push funktioniert erst, wenn ich reload() mit der Klasseninstanz aufruft. wie product = Product() Product.objects (Kommentare__comment_id = target) .update ( push__comments__S__likes = newLike) product.reload() – Shashank