2012-08-28 49 views
1

我有一个问题,只有一个字段被保存在mongoengine模型上。只有一个字段被保存在Python mongoengine模型中

下面是类的定义:

from mongoengine import * 

connect('leads') 

class Contact(Document): 
    name = StringField() 
    email = StringField() 
    phone = StringField() 
    company = StringField() 
    title = StringField() 
    message = StringField() 

在Python终端,我跑:

>>> from Contact import Contact 
>>> contact = Contact(name='myrtle williams', email='[email protected]', phone='1234567890', title='president', message='asdfsadf') 
>>> contact.save() 

然后,在蒙戈,我查询和所有我看到的是与现场的文档“消息“保存:

{ 
    "_id" : ObjectId("503cfa86d0d9b317a258e136"), 
    "_types" : [ 
     "Contact" 
    ], 
    "message" : "asdfsadf", 
    "_cls" : "Contact" 
} 

为什么没有保存其余的字段?

回答

3

我试着运行你的代码,它适用于我(mongodb 1.8.2,mngoengine 0.6.20,pymongo 2.2.1)。

{ 
    "_id" : ObjectId("503cfceb6cb71a38d4a4cd4e"), 
    "_types" : [ "Contact" ], 
    "name" : "myrtle williams", 
    "title" : "president", 
    "phone" : "1234567890", 
    "_cls" : "Contact", 
    "message" : "asdfsadf", 
    "email" : "[email protected]" 
} 

最有可能你遇到了有关mongoengine的旧版本中的一个问题。

+0

我用的是:MongoDB的2.0.7,mongoengine 0.6.18和2.2.1 pymongo时做说明。升级mongoengine 0.6.20现在节省了一些更多的领域,但不是全部。 –

+0

@OvedD哪些字段丢失?如果您的意思是*公司*,*联系人=联系人(...)*呼叫中缺少该公司。 –

0

您的测试代码看起来不错,MongoEngine也有类似的测试用例,确保它在0.4天内加入项目之前就已确定。

我能想到的不同的数据可能有两个原因:

  1. 您在数据库中有旧的测试数据 - 从以前版本的Contact
  2. 您从一个导入不同的定义文件
    from Contact import Contact