繁体   English   中英

mongoengine ListField(ReferenceField())和自定义primary_key

[英]mongoengine ListField(ReferenceField()) and custom 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管理UI来查看数据库时,一切似乎都可以:

{“_ cls”:“消息”,“_ id”:1,“_ type”:[“消息”],

“评论”:[{“$ ref”:“comment”,“$ id”:1},{“$ ref”:“comment”,“$ id”:2}]}

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

2 message_two

1 message_one

此外,我试图不使用自定义主键“id”,在这两种情况下一切正常。

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

解除引用时出现了一个错误,这在0.6.15中得到修复 - 请升级!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM