[英]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.