Экземпляр модели обновления с динамическими именами полей

То, что я хочу сделать, довольно просто:

f=Foobar.objects.get(id=1)
foo='somefield'
bar='somevalue'
f.foo=bar
f.save()

Это не работает, поскольку это пытается обновить поле 'нечто' f объекта, которое, конечно, не существует. Как я могу выполнить это?

6
задан Matthew Schinckel 30 May 2010 в 05:34
поделиться

1 ответ

Вы можете использовать setattr :

f = Foobar.objects.get(id=1)
foo = 'somefield'
bar = 'somevalue'
setattr(f, foo, bar) # f.foo=bar
f.save()

[ setattr ] является аналогом getattr () . Аргументы - это объект, строка и произвольное значение. Строка может называть существующий атрибут или новый атрибут. Функция присваивает значение атрибуту, если это позволяет объект.

17
ответ дан 8 December 2019 в 13:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: