3
我有一些非常簡單的代碼:mongoengine ListField(ReferenceField())和定製primary_key
from mongoengine import *
class Comment(Document):
id = IntField(primary_key=True)
text = StringField()
class Message(Document):
id = IntField(primary_key=True)
comments = ListField(ReferenceField(Comment))
connect('test_db')
c1 = Comment(id=1)
c1.text = 'message_one'
c1.save()
c2 = Comment(id=2)
c2.text = 'message_two'
c2.save()
m = Message(id=1)
m.comments = [c1, c2]
m.save()
msg = Message.objects.get(id=1)
for comment in msg.comments:
print comment.id, comment.text
我預計它會打印
1 message_one
2 message_two
但我有
1 message_one
1 message_one
當我使用任何MongoDB的管理界面,查看數據庫中的一切似乎是確定:
{ 「_cls」: 「消息」, 「_id」:1,「_types」:[「Message」],
「comments」:[{「$ ref」:「comment」,「$ id」:1},{「$ ref」:「評論「,」$ id「:2}]}
我試圖交換c1和c2中的代碼(例如使用m.comments = [C2,C1])和出乎意料地我已經得到正確的輸出:
2 message_two
1 message_one
而且我試着不使用自定義主鍵「ID」,並在這兩種情況下,一切工作正常。
我對這個bug非常困惑,看起來它與mongoengine有什麼不對,或者我沒有以正確的方式使用它。請有任何想法?