【问题标题】:Only one field gets saved in Python mongoengine modelPython mongoengine 模型中仅保存一个字段
【发布时间】:2012-08-23 06:03:07
【问题描述】:

我遇到了一个问题,即只有一个字段保存在 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='myrtlewilliams@gmail.com', phone='1234567890', title='president', message='asdfsadf')
>>> contact.save()

然后,在 mongo 中,我查询,我看到的只是一个保存了“消息”字段的文档:

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

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

【问题讨论】:

    标签: python mongodb mongoengine


    【解决方案1】:

    我尝试运行您的代码,它对我来说效果很好(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" : "myrtlewilliams@gmail.com" 
    }
    

    您最有可能遇到与 mongoengine 的旧版本之一相关的问题。

    【讨论】:

    • 我使用的是:mongodb 2.0.7、mongoengine 0.6.18 和 pymongo 2.2.1。升级 mongoengine 0.6.20 现在可以保存更多字段,但不是全部。
    • @OvedD 缺少哪些字段?如果您的意思是 company - contact = Contact(...) 调用中缺少它。
    【解决方案2】:

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

    我可以想到导致不同数据的两个可能原因:

    1. 您的数据库中有旧的测试数据 - 来自以前版本的 Contact
    2. 您正在导入与执行以下操作时描述的文档不同定义的文档:
      from Contact import Contact

    【讨论】:

      猜你喜欢
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      相关资源
      最近更新 更多