ошибка при попытке обновить mongodb с использованием переменной фляги для имени поля

Я работаю с флягой, пытаясь обновить коллекцию mongodb, которая отлично работает, когда я указываю имя поля, которое необходимо обновить, но я хочу, чтобы имя поля было переменной в зависимости от того, что нужно обновить. Это отлично работает для обновления поля:

Scoresenglish6.objects(user_id=user_id).update(E6001=str(score))

Но обновляемое имя поля может измениться (так что в данном случае это E6001), поэтому у меня есть имя поля, которое нужно обновить, как переменную с именем field_name:

score = "10"
field_name = "E6001"
Scoresenglish6.objects(user_id=user_id).update(field_name=str(score))

Затем я получаю сообщение об ошибке:

mongoengine.errors.InvalidQueryError: не удается разрешить поле field_name

очевидно, потому что нет имени поля с именем field_name. Есть ли способ сделать это? Заранее спасибо, я домашний кодер, работающий над домашним проектом, поэтому прошу прощения, если это кажется расплывчатым и плохо объясненным.


person Aristotle    schedule 04.07.2020    source источник


Ответы (1)


Вы можете использовать locals() для достижения желаемого.

Попробуй это:

score = "10"
field_name = "E6001"
Scoresenglish6.objects(user_id=user_id).update(locals()['field_name']=str(score))

Ознакомьтесь с этим руководством, чтобы понять, как работает locals() и как их использовать.

person Ravi Shankar Bharti    schedule 05.07.2020