То, что я хочу сделать, довольно просто:
f=Foobar.objects.get(id=1)
foo='somefield'
bar='somevalue'
f.foo=bar
f.save()
Это не работает, поскольку это пытается обновить поле 'нечто' f объекта, которое, конечно, не существует. Как я могу выполнить это?
Вы можете использовать setattr
:
f = Foobar.objects.get(id=1)
foo = 'somefield'
bar = 'somevalue'
setattr(f, foo, bar) # f.foo=bar
f.save()
[
setattr
] является аналогомgetattr ()
. Аргументы - это объект, строка и произвольное значение. Строка может называть существующий атрибут или новый атрибут. Функция присваивает значение атрибуту, если это позволяет объект.