mongoengine操作储蓄错误

2024-10-01 19:22:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python脚本来填充mongodb数据库,我的模型如下所示:

from mongoengine import *
from mongoengine.django.auth import User

class TrackGroup (Document):
    name = StringField(required=True)
    users = ListField(ReferenceField('User'))
    devices = ListField(ReferenceField('Device'))

class Device(Document):
    name = StringField(max_length=50, required=True)
    grp = ListField(ReferenceField(TrackGroup))

class User(User):
    first_name = StringField(max_length=50)
    last_name = StringField(max_length=50)
    grp = ListField(ReferenceField(TrackGroup))

我的剧本是这样的:

^{pr2}$

当我调用gRef.save()时,问题发生了,我得到以下错误:

raise OperationError(message % unicode(err))
mongoengine.errors.OperationError: Could not save document (LEFT_SUBFIELD only supports Object: users.0 not: 7)

我环顾四周看了一会儿,here它说这意味着我试图用一个空键设置一个文件,就像这样:(这个例子来自上面的链接,不是我的)

{
    "_id" : ObjectId("4e52b5e08ead0e3853320000"), 
    "title" : "Something", 
    "url" : "http://www.website.org", 
    "" : "", 
    "tags" : [ "international"]
}

我不知道这样的字段从何而来,但我打开一个mongo shell,查看了三个集合中的文档,却找不到这样的字段。在

注意:如果我先添加设备,则在添加用户后保存组时会发生相同的错误。在


Tags: namefromimporttruerequireddocumentlengthmax
1条回答
网友
1楼 · 发布于 2024-10-01 19:22:41

我也犯了同样的错误,这个技巧对我有效:

the_obj_causing_error.reload()
/* make some change */
the_obj_causing_error.price = 5
the_obj_causing_error.save()

只需在更改对象之前尝试reload()。在

相关问题 更多 >

    热门问题