Ответ 1
Если вы измените значение с помощью setattr, вам необходимо запомнить модель после ее модификации. Я был укушен в прошлом, когда я изменил значения, но забыл сохранить модель и получил тот же результат.
setattr(f, 'bar', 'BAR')
f.save()
Кажется, что это должно быть мертвым простым, поэтому я должен что-то упустить. Я просто хочу установить значение поля в экземпляре модели по имени. Скажем, у меня есть:
class Foo(Model):
bar = CharField()
f = Foo()
Я хочу установить значение bar по имени, а не путем доступа к полю. Так что-то вроде:
f.fields['bar'] = 'BAR"
вместо
f.bar = 'BAR'
Я пробовал setattr, но он не сохраняет значение в базе данных. Я также пробовал пройти через поля _meta.fields, но получил различные ошибки на этом пути.
Если вы измените значение с помощью setattr, вам необходимо запомнить модель после ее модификации. Я был укушен в прошлом, когда я изменил значения, но забыл сохранить модель и получил тот же результат.
setattr(f, 'bar', 'BAR')
f.save()
Возможно, нам придется увидеть больше кода.
setattr(f, 'bar', 'BAR')
должен работать так, как это делает Django внутри.
Убедитесь, что вы также вызываете "save".