我一直在做噩梦,试图让 MongoDB 与 Django 一起工作。我现在已成功安装它,但在第一次尝试保存对象时出错。我一直在关注本教程,他们提供的 Post 模型是我精确复制的。
这是模型的代码:
from django.db import models
from djangotoolbox.fields import ListField
class Post(models.Model):
title = models.CharField(max_length=200)
text = models.TextField()
tags = ListField()
comments = ListField()
该帖子实际上是在此处创建(并插入)的:
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']
... )
完整的堆栈跟踪可以在这里找到。错误本身是:
InvalidDocument: documents must have only string keys, key was <django.db.models.fields.CharField object at 0x22cae50>
显然 MongoDB 正在运行,因为它希望键是字符串而不是整数。但是为什么朗姆酒不见了?呃,为什么标准的 Django 对象不能保存到 MongoDB 数据库中?
我添加了被忽略的必需的 CharField 参数 max_length。在这种情况下它不起作用,如果我也删除列表也不起作用。