Почти никогда нет причин использовать exec.
Определите метод в модели для возврата формы.Вы можете использовать функцию globals()
, которая возвращает словарь всех атрибутов уровня модуля:
class Project(model.Model):
...
def get_form(self):
form = globals()[self.form]
return form
, но я думаю, что лучшим способом было бы определить словарь уровня модуля со всеми формами:
project_forms = {
'foo': FooForm
'bar': BarForm
}
class Project(models.Model):
def get_form(self):
return project_forms[self.form]
Обратите внимание, что значения словаря являются фактическими классами форм, а не их именами.