Фильтр Django обновляет определенное поле на основе возврата AJAX
У меня есть пост Ajax, который возвращает следующие данные:
{u'related_id': u'9', u'db_name': u'my_field', u'name': u'jsaving_draft', u'value': u'hypothesis sadfasdfadfws asdfasdf'}
На мой взгляд, я имею:
if request.is_ajax():
if "jsaving_draft" in request.body:
results = json.loads(request.body)
print results
save_id = results['related_id']
save_db = results['db_name']
save_value = results['value']
temp = Dbtable.objects.filter(id=save_id).update(save_db=save_value)
Как я могу указать конкретный элемент таблицы для обновления на основе save_db без жесткого кодирования имени строки базы данных. У меня есть таблица в моей базе данных с именем.
Я пытался сделать что-то вроде:
Dbtable.objects.filter(id=save_id).update("%s"=save_value) % save_db
но это не удалось эффектно. Кто-нибудь имеет представление о том, как я могу сделать эту работу?
1 ответ
Решение
Вы можете использовать распаковку аргументов:
Dbtable.objects.filter(id=save_id).update(**{save_db: save_value})
Пример:
>>> def test(a,b):
... return a + b
...
>>> test(**{'a': 1, 'b': 2})
3