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条消息_一条

2条消息_两个

但是我有

1条消息_一条

1条消息_一条

当我使用任何mongodb管理UI来查看数据库时,一切似乎都很好:

{"_cls":"消息","_id":1,"_types":["消息"],

"评论":{"$ref":"comment","$id":1},{"$ref":

我试图在代码中交换c1和c2(例如使用m.comments=[c2,c1]),但出乎意料的是,我得到了正确的输出:

2条消息_两个

1条消息_一条

我也试着不使用自定义主键";id";在这两种情况下,一切都正常。

我对这个bug很困惑,它似乎是mongoengine出了问题,或者我没有以正确的方式使用它。拜托,有什么想法吗?

取消引用时出现错误,已在0.6.15中修复-请升级!

最新更新