Python DoesNotExist:[模型]匹配查询在id(ObjectId)处不存在

Python DoesNotExist:[模型]匹配查询在id(ObjectId)处不存在,python,django,mongodb,mongoengine,Python,Django,Mongodb,Mongoengine,我正在尝试使用ObjectId查询唯一的文档。但是出现了错误: DoesNotExist:路由匹配查询不存在 当将其作为请求传递给我的视图时,它会以ObjectId typeform打印出相应的ObjectId。因此,行route\u test=route.objects.get(id=\u id)应该没有问题。 我有以下代码: 视图.py def update(request): if request.method == "POST": _id = request.

我正在尝试使用ObjectId查询唯一的文档。但是出现了错误:

DoesNotExist:路由匹配查询不存在

当将其作为请求传递给我的视图时,它会以ObjectId typeform打印出相应的ObjectId。因此,行
route\u test=route.objects.get(id=\u id)
应该没有问题。 我有以下代码:

视图.py

def update(request):

    if request.method == "POST":

        _id = request.POST.get('_id',ObjectId())
        print(_id)
        route_id = request.POST.get('route_id','')
        geometry = request.POST.get('geometry', '')
        properties = request.POST.get('properties','')

        #r = Route.objects.get(route_id='LTFRB_PUJ2616') --> I cannot use this
                                      #because it has 5 instances (Not Unique)
        #print (r["id"],r["properties"]) 

        test = Route.objects.get(id = ObjectId('587c4c3b203ada19e8e0ecf6'))
        print (test["id"], test["properties"])

        try:
            route_test = Route.objects.get(id=_id)
            print(route_test)
            Route.objects.get(id=_id).update(set__geometry=geometry, set__properties=properties)
            return HttpResponse("Success!")

        except:
            return HttpResponse("Error!")
from __future__ import unicode_literals

from mongoengine import *

class Route(Document):
    type = StringField(required=True)
    route_id = StringField(required=True)
    geometry = LineStringField()
    properties = DictField()

    meta = {'collection':'routes'}
ajax

 var finishBtn = L.easyButton({
     id:'finish',
     states: [{
              icon:"fa fa-check",
              onClick: function(btn){
                  selectedFeature.editing.disable();
                  layer.closePopup();
                  var editedFeature = selectedFeature.toGeoJSON();
                  alert("Updating:" + editedFeature.route_id);

                  $.ajax({
                     url: "/update/",
                     data: {id:editedFeature.id,
                            route_id: JSON.stringify(editedFeature.route_id),
                            geometry: JSON.stringify(editedFeature.geometry),
                            properties: JSON.stringify(editedFeature.properties)
                         }, 
                     type: 'POST'     
            });
 }
model.py

def update(request):

    if request.method == "POST":

        _id = request.POST.get('_id',ObjectId())
        print(_id)
        route_id = request.POST.get('route_id','')
        geometry = request.POST.get('geometry', '')
        properties = request.POST.get('properties','')

        #r = Route.objects.get(route_id='LTFRB_PUJ2616') --> I cannot use this
                                      #because it has 5 instances (Not Unique)
        #print (r["id"],r["properties"]) 

        test = Route.objects.get(id = ObjectId('587c4c3b203ada19e8e0ecf6'))
        print (test["id"], test["properties"])

        try:
            route_test = Route.objects.get(id=_id)
            print(route_test)
            Route.objects.get(id=_id).update(set__geometry=geometry, set__properties=properties)
            return HttpResponse("Success!")

        except:
            return HttpResponse("Error!")
from __future__ import unicode_literals

from mongoengine import *

class Route(Document):
    type = StringField(required=True)
    route_id = StringField(required=True)
    geometry = LineStringField()
    properties = DictField()

    meta = {'collection':'routes'}

应该怎么做?即使是我直接提供传入id的行
test=Route.objects.get(id=ObjectId('587c4c3b203ada19e8e0ecf6')
也有相同的错误…

我认为您没有获得通过ajax发送的id。在
\u id=request.POST.get(''u id',ObjectId())
中,您将获得
\u id
,在ajax中,您将传递
id
。因此,您将获得默认值。请使用字符串,而不是对象id。。django处理将id转换为对象的过程id@ManasviBatra我试图将_id设置为
str(_id)
,并将其作为
Routes.objects.get(id=objectid(_id))
传递,但仍然为空..Route.objects.get(id=str(_id)),并且您是否在视图中获得了_id的值???@ManasviBatra,这也不起作用。它是从我的ajax视图传递的,该视图直接来自我的mongodb文档