簡體   English   中英

save()在Mongoengine中不起作用

[英]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版:

  1. 關於Django支持的MongoEngine文檔指出:

    Django支持已從MongoEngine主存儲庫中分離出來。 可以在MongoEngine 0.9發行版中發現舊版Django擴展。

    6.1。 把招工廣告!

    MongoEngine團隊正在尋求幫助,以幫助您維護MongoEngine的新Django擴展! 如果您具有Django的經驗,並且希望為該項目做出貢獻,請聯系郵件列表或直接在GitHub上進行貢獻。

  2. 導致此倉庫 ,其中指出以下內容:

    如果您要使用它,這是不穩定的項目-修正您的需求
    現在,我們的目標是使事情在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM