-2

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

1 Answers1

-1

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)