Вы должны использовать определенные модели для этого. Для каждой формы, которая может быть настроена таким образом, должна быть создана новая запись в базе данных. Я думаю, это должно выглядеть так:
class FormSettings(Model):
form = CharField(..)
class FormAttrib(Model):
form_settings = ForeignKey(FormSettings)
field = CharField(..)
attrib_name=CharField(..)
attrib_value=CharField(..)
В FormSettings.form вы должны хранить некоторый адрес формы, например, скажем. и когда форма построена (в init ), она должна искать запись в db и использовать атрибуты, которые были описаны для нее.
Вы можете легко создавать записи в БД, если вы используете собственный метакласс для своих форм и заставляете его регистрироваться в базе данных (создавать правильную запись FormSettings), когда создается класс. Это будет сделано один раз, когда процесс начнется, что не должно быть так плохо.
Надеюсь, это немного поможет. Если у вас есть дополнительные вопросы, я буду рад помочь :-) Мне нравятся эти нестандартные приборы django :-) Здесь начинается все самое интересное: -)
EDIT:
ОК, допустим, вы хотите, чтобы у вас была еда приложения и сформировать FavouriteFoodForm с полем food_name. Вы сохраняете в базе данных в таблице formsettings как food.FavouriteFoodForm и добавляете одну настройку атрибута: field = 'food_name', attrib_name = 'required', attribute_value = 'True' (это не идеально, но все же это не так уж плохо ').
Нет, в FavouriteFoddForm вы ищете настройки в базе данных, поэтому вы делаете:
settings = FormSettings.objects.get(form=app_name + self.__class__.name)
и вы перебираете настройки
for setting in settings.formattrib_set():
и здесь вы просто вызываете exec и устанавливаете правильный атрибут:
exec("getattr(self, settings.field)[attrib_name] = %s" % attrib_value)
Это должно установить атрибуты required = True.