2012-09-21 57 views
2


當我嘗試刪除一個,它這樣做,然後再次嘗試只是想告訴我它找不到對象
它可能不會在查詢同樣的事情過於強硬它不是一個真正的問題,現在
mongoengine調用Django的原因,當我創造它被插入到MongoDB的兩倍一個新的對象視圖被調用兩次

我使用Django 1.4.1與0.7.5 mongoengine

我刪除視圖的代碼

def delbadge(request, oid): 
    log.info('searching') 
    try: 
     badg = BgBadge.objects(id=oid)[0] 
    except: 
     log.error('not found') 
     raise Http404 
    badg.delete() 
    log.info('deleted') 
    return HttpResponseRedirect('/badge/') 
    #raise Http404 

它給了我是

searching 
deleted 
searching 
not found 

如果刪除badg.delete()我得到

searching 
deleted 

同樣的事情,當我更換return HttpResponseRedirect('/badge/')通過raise Http404

所以我測試了mongoengine碼出的Django和沒有mongoengine的Django代碼,他們都工作得很好

編輯:
/badge/的處理程序是url(r'^badge/$', AllBadges.as_view()),
我檢查了http請求,它不會似乎是原因

更新:
我試圖在另一臺計算機上,並獲得相同的行爲

+0

是否可以發佈「/ badge /」路徑的處理程序? – shelman

+0

聽起來像你的處理程序執行兩次。否則,你無法「搜索」記錄兩次,對嗎? 請注意,MongoDB的remove()會刪除所有*匹配的文檔,而不僅僅是第一個。 –

+0

@jesse我認爲問題來自處理程序或視圖的事實是無關緊要的,因爲當mongoengine調用被刪除時它消失了。至於MongoDB的remove(),它是不相關的,因爲我通過oid搜索對象 – schwert

回答