当我创建一个新对象时,它会被插入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/')
替换raise Http404
时,同样如此
所以我测试了django中的mongoengine代码和没有mongoengine的django代码,它们都工作得很好
编辑:
/badge/
的处理程序为url(r'^badge/$', AllBadges.as_view()),
我检查了http请求,它似乎不是原因
更新:
我在另一台计算机上尝试并获得相同的行为
答案 0 :(得分:1)
事实证明问题是由django-debug-toolbar引起的,更具体地说是分析面板,它的钩子会导致所有视图被调用两次。
删除debug_toolbar.panels.profiling.ProfilingDebugPanel
面板可解决问题
https://github.com/django-debug-toolbar/django-debug-toolbar/issues/267
这个问题是开发人员所知的,应该在回购中修复。