我尝试使用Mongoengine和Django执行简单的插入操作。
关于我的项目结构,我只有一个项目,AProject和一个应用程序AnApp。我在一台IP为X.X.X.X的远程计算机上运行mongo。我能够使用Robomongo插入文档。
我删除了位于AProject目录中的settings.py的默认数据库配置部分。新添加的行如下所示:
# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
import mongoengine
# ----------- MongoDB stuff
from mongoengine import register_connection
register_connection(alias='default', name='AProject', host='X.X.X.X')
# ----------
现在让我展示一下位于AnApp内的models.py和views.py。
models.py
from mongoengine import Document, StringField
class Confession(Document):
confession = StringField(required=True)
views.py
from django.http import HttpResponse
from models import Confession
from mongoengine import connect
def index(request):
connect('HacettepeItiraf', alias='default')
confession = Confession()
confession.confession = 'First confession from the API'
print(confession.confession + ' Printable') # The output is --First confession from the API Printable--
print(confession.save()) # The output is --Confession object--
return HttpResponse(request)
位于AProject内的urls.py简单如下:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^confessions/', include('confession.urls')),
url(r'^admin/', admin.site.urls),
]
当我输入http://127.0.0.1:10000/confessions/时,我看到了一个我期望的空白屏幕。但是,API中没有任何内容。除了Confession object
之外,我得到了预期的输出。
我该如何解决这个问题?
答案 0 :(得分:1)
修改强> 我找到了具体证明,目前 MongoEngine 对Django的支持是不稳定的,它对应于Django 1.9版本:
Django支持已从主要的MongoEngine存储库中分离出来。遗留的Django扩展可能与MongoEngine的0.9版本捆绑在一起。
和
<强> 6.1。求助!
MongoEngine团队正在寻找帮助并为MongoEngine维护一个新的Django扩展!如果您有Django经验,并希望为该项目做出贡献,请通过邮件列表或GitHub提供帮助。
这导致this repo,其中陈述如下:
这是不稳定的项目,如果您想使用它 - 修复您需要的东西
现在我们的目标是让Django 1.9上的东西正常工作
因此,它可能无法在此状态下与Django一起使用,也不能与您的版本配合使用,因此会出现问题。
<小时/> 初步尝试,由于遗留原因将其留在此处。
我认为问题出现在初始化对象的方式上,尽管我没有设置来测试这个理论。
通常认为使用.create()
方法制作新对象更好:
def index(request):
connect('HacettepeItiraf', alias='default')
confession = Confession.objects.create(
confession='First confession from the API'
)
print(confession.confession + ' Printable')
confession.save()
return HttpResponse(request)
有关详情,请查看Django & MongoDB tutorial
在本教程中,未提及受支持的Django版本,但我还没有找到MongoDB Engine
可以或不能与Django版本良好协作的具体证明&gt; 1.8。