gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:30:13 25 4
gpt4 key购买 nike

我有一些非常简单的代码:

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" : "Message" , "_id" : 1 , "_types" : [ "Message"] ,

"comments" : [ { "$ref" : "comment" , "$id" : 1} , { "$ref" : "comment" , "$id" : 2}]}

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

2 message_two

1 message_one

我也尝试不使用自定义主键“id”,并且在这两种情况下一切正常。

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

最佳答案

取消引用中存在一个错误,该错误已在 0.6.15 中修复 - 请升级!

关于python - mongoengine ListField(ReferenceField()) 和自定义primary_key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11526593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com