Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在mongoengine中使用get_object_或_404()方法_Python_Django_Mongoengine - Fatal编程技术网

Python 在mongoengine中使用get_object_或_404()方法

Python 在mongoengine中使用get_object_或_404()方法,python,django,mongoengine,Python,Django,Mongoengine,我开始使用Mongodb学习Django,在Django项目教程之后创建一个投票应用程序。我在提出404错误时遇到了一个问题。 如果我这样做: def detail(request, poll_id): try: poll = Poll.objects.get(pk=poll_id) except Poll.DoesNotExist: raise Http404 return render(request, 'polls/detail.html', {'poll': pol

我开始使用Mongodb学习Django,在Django项目教程之后创建一个投票应用程序。我在提出404错误时遇到了一个问题。 如果我这样做:

def detail(request, poll_id):
 try:
    poll = Poll.objects.get(pk=poll_id)
 except Poll.DoesNotExist:
    raise Http404
 return render(request, 'polls/detail.html', {'poll': poll})
它可以工作,但如果我尝试使用django快捷方式:

def detail(request, poll_id):
  poll = get_object_or_404(Poll, pk=poll_id)
  return render(request, 'polls/detail.html', {'poll': poll})
我得到这个错误

Object is of type 'Poll', but must be a Django Model, Manager, or QuerySet
我认为出现此错误是因为在models.py中,我将轮询模型定义为mongoengine文档,而不是django模型

class Poll(Document):

我应该怎么做才能让get\u object\u或\u 404()方法正常工作?

现在是时候推出自己的快捷方式了

def get_obj_或_404(klass,*args,**kwargs):
尝试:
返回klass.objects.get(*args,**kwargs)
除klass.DoesNotExist外:
提高Http404
def详细信息(请求、轮询id):
poll=get_obj_或_404(poll,pk=poll_id)
返回呈现(请求'polls/detail.html',{'poll':poll})
我还没有测试过,但这是基本的想法


我不认为你做错了什么,只是Django快捷方式不支持
文档
类。检查Django源代码,特别是函数(使用函数,引发异常的函数),然后我想您会理解的。

谢谢,它成功了!但我想知道,如果可能的话,为什么我不能使用django的快捷方式,如果这是mongoengine的问题,或者我做错了什么不,你没有做错什么,请查看我编辑的答案以了解更多详细信息