2

当我创建一个新对象时,它会两次插入到 mongodb 中,
当我尝试删除一个时,它会这样做,然后再试一次,只是告诉我它找不到对象
它可能在查询中做同样的事情太难了它不是现在真的是个问题

我正在使用 django 1.4.1 和 mongoengine 0.7.5

我的删除视图的代码是

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/')byraise Http404

所以我测试了 django 的 mongoengine 代码和没有 mongoengine 的 django 代码,它们都工作得很好

编辑:
处理程序/badge/url(r'^badge/$', AllBadges.as_view()),
我检查了http请求,它似乎不是原因

更新:
我在另一台计算机上尝试过并得到相同的行为

4

1 回答 1

1

事实证明问题是由 django-debug-toolbar 引起的,更具体地说是分析面板,其挂钩导致所有视图被调用两次。
卸下debug_toolbar.panels.profiling.ProfilingDebugPanel面板可以解决问题。
https://github.com/django-debug-toolbar/django-debug-toolbar/issues/267
开发人员知道这个问题,应该在回购中修复。

于 2012-10-02T12:48:29.230 回答