Chciałbym dołączyć nowy obiekt EmbeddedDocument ListField do istniejącego dokumentu EmbeddedDocument ListField. Innymi słowy dołączanie nowego dokumentu do listy, która należy do dokumentu na liście.Mongoengine: Jak dołączyć nowy dokument do dokumentu Embedded ListField?
Moja Model A post może zawierać kilka Komentarze każdy komentarz może mieć kilka Lubi:
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)
mój kod: (nie działa „dołączyć” komenda nie robi istnieje, tylko „set” istnieje)
def appendNewLike():
user = {..}
target = ObjectId(commentId)
newLike = Like(user=user)
Product.objects(comments__comment_id=target).update(append_comments__S__likes=newLike)
Idealnym rozwiązaniem byłoby coś jak:
def appendNewLike():
user = {..}
target = ObjectId(commentId)
newLike = Like(user=user)
Product.objects(comments__comment_id=target).comments.likes.append(newLike)
Komentarze? Propozycje?
Dziękuję $ push działa! – rat
Witaj, push nie działa, dopóki nie wywołasz reload() z instancją klasy. like product = Product() Product.objects (comments__comment_id = target) .update ( push__comments__S__likes = newLike) product.reload() – Shashank