Search code examples
pythondjangomongodbbackenddjongo

Mongodb, create update in python


enter image description here

Here is my mongodb object. I need to write update function for "graded" field. Sometimes i need to create this field, sometimes update.

@api_view(['POST'])
def updateGrade(request):
    db = connect_to_db()
    data = json.loads(request.body)
    db.update({ '_id': ObjectId(data["id"])},
       { "$set" : {
            "worksheetSolutions.$[idx]": {"graded": data["status"]}
        } },
        {"arrayFilters":[{"idx":data["answerId"]}]}          
    )
    q = db.find_one({'_id': ObjectId(data["id"])})
    q['_id'] = str(q['_id'])
    return JsonResponse(q, safe=False)

Here is my python code. (not correct at all as I see now)

  • data.id => _id
  • data.answerId => id of answer
  • data.status => true/false var

Solution

  • Ok, with some time i got it

    def updateGrade(request):
        db = connect_to_db()
        data = json.loads(request.body)
        db.update({ '_id': ObjectId(data["id"]), "worksheetSolutions.id": data["answerId"]},
           { "$set" : {
                "worksheetSolutions.$.graded": data["status"]
            } }  
        )
        q = db.find_one({'_id': ObjectId(data["id"])})
        q['_id'] = str(q['_id'])
        return JsonResponse(q, safe=False)