1

フィールドの 1 つだけが 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"
}

残りのフィールドが保存されないのはなぜですか?

4

2 に答える 2

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" : "myrtlewilliams@gmail.com" 
}

mongoengine の古いリリースの 1 つに関連する問題に直面した可能性が最も高いでしょう。

于 2012-08-28T17:21:16.203 に答える
0

あなたのテスト コードは問題ないように見えます。MongoEngine には、私がプロジェクトに参加する 0.4 日前から同様のテスト ケースがあり、それを保証しています。

データが異なる理由として、次の 2 つが考えられます。

  1. データベースに古いテスト データがあります - 以前のバージョンのContact
  2. 次の場合に説明されているものとは異なる定義の Document をインポートしています。
    from Contact import Contact
于 2012-09-03T15:25:44.340 に答える