2

私はこのチュートリアルを使用して、MongoDBを使用して最初のDjangoアプリを実験して起動しました。チュートリアルでは、次のように簡単なPostクラスを作成します。

from django.db import models
from djangotoolbox.fields import ListField

class Post(models.Model):
    title = models.CharField()
    text = models.TextField()
    tags = ListField()
    comments = ListField()

ものすごく単純。次に、次のコマンドを使用してPostオブジェクトを作成します。

post = Post.objects.create(
...     title='Hello MongoDB!',
...     text='Just wanted to drop a note from Django. Cya!',
...     tags=['mongodb', 'django'],
...     comments=['comment 1', 'comment 2']
... )

ここにコピーしたかなり長いスタックトレースをすぐに送信します。最終的なエラーは次のとおりです。

TypeError: encoder expected a mapping type but got: {<django.db.models.fields.CharField object at 0x2fc5f10>: 'Hello MongoDB!', <djangotoolbox.fields.ListField object at 0x2fccd10>: ['comment 1', 'comment 2'], '_id': ObjectId('4f8a22f8db0ee4386f000000'), <djangotoolbox.fields.ListField object at 0x2fcc750>: ['django', 'mongodb'], <django.db.models.fields.TextField object at 0x2fcc290>: 'text test'}

まったく異なるデータ型を想定しているようで、どこに行けばいいのかわかりません。グーグル検索は何の役にも立たなかった。ヒントや解決策はどれも恩恵になります。

ありがとう、

ParagonRG

Post.objects.create()編集:チュートリアルを正しく実行すると、最初のオブジェクトが作成されたときに実際にエラーが発生することに気付きました。したがって、同じ問題が発生しますが、save()関数がありません。

編集:pip freeze仮想環境に現在インストールされているPythonパッケージを表示するように入力すると、次のようになります。

Django==1.3.1
django-mongodb-engine==0.4.0
djangotoolbox==0.9.2
pymongo==2.1.1
wsgiref==0.1.2
4

2 に答える 2

1

チュートリアルで説明されている正確なセットアップで試してみましたが、これを再現できませんでした:-(

インストール手順に正確に従っていますか? 特に、まったく同じリポジトリを使用しましたか?

どのバージョンの PyMongo を使用していますか?

于 2012-04-15T07:57:35.047 に答える
0

通常、save() は、モデル オブジェクトを変更するとき、またはモデル オブジェクトを作成するときに使用されます。https://docs.djangoproject.com/en/dev/topics/db/queries/

于 2012-04-15T02:37:18.160 に答える