[英]save() doesn't work in Mongoengine
我正在尝试使用Mongoengine和Django执行简单的插入操作。
就我的项目结构而言,我有一个项目AProject和一个应用程序AnApp。 我在IP为XXXX的远程计算机上有一个正在运行的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
我得到了预期的输出。
我怎么解决这个问题?
编辑:我找到了具体的证据,表明当前MongoEngine对Django的支持是不稳定的,它对应于Django 1.9版:
关于Django支持的MongoEngine文档指出:
Django支持已从MongoEngine主存储库中分离出来。 可以在MongoEngine 0.9发行版中发现旧版Django扩展。
和
6.1。 把招工广告!
MongoEngine团队正在寻求帮助,以帮助您维护MongoEngine的新Django扩展! 如果您具有Django的经验,并且希望为该项目做出贡献,请联系邮件列表或直接在GitHub上进行贡献。
导致此仓库 ,其中指出以下内容:
如果您要使用它,这是不稳定的项目-修正您的需求
现在,我们的目标是使事情在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教程 。
在本教程中,没有提到受支持的Django版本,但是我还没有找到具体的证据来证明MongoDB Engine
在Django版本> 1.8中可以或不能很好地发挥作用。
祝好运 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.