我一直在使用本教程来试验并使用 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'}
它似乎期待完全不同的数据类型,我不知道该去哪里。谷歌搜索没有发现任何用处。任何提示或解决方案都将是一个福音。
谢谢,
典范RG
编辑:我已经意识到,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