Big_Alex
@Big_Alex
молод и перспективен

Как генерировать форму на ходу?

Идея такая:
Брать из БД заголовки колонок и на ходу для разных пользователей генерировать формы.
Например:
Есть класс, который вытягивает заголовки колонок таблицы в виде списка
class DbFields:  # returns col-names from base for rendering forms
    @staticmethod
    def get_col_names(name):  # name - table name
        a = 'select * from ' + name
        cursor.execute(a)
        return [member[0] for member in cursor.description]

на выходе получаем что-то типа ['id', 'item', 'about', 'size', 'weit']
а теперь надо для User1, например, сформировать форму с полями 'item', 'size', 'weit'
и вот тут у меня и ступор..
нацарапал класс, но на выходе получается список объектов-полей
class UserInput(FlaskForm):
    @staticmethod
    def form_render(table):
        fields = []
        names = DbFields.get_col_names(table)
        for i in range(len(names)):
            f = StringField(names[i], validators=[DataRequired()])
            fields.append(f)
            return fields

подскажите куда дальше копать?
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
planc
@planc
class MyForm(FlaskForm):
    @classmethod
    def dynamicForm(cls):
        for n in ['field1', 'field2', 'field3']:
            setattr(cls, n, StringField(n))
        return cls()


form = MyForm.dynamicForm()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы