Вы можете написать динамическую форму, подобную этой, предполагая, что вы знаете, как запросить базу данных, чтобы вернуть данные в формате, в котором вы можете настроить приведенный ниже код, чтобы он работал для вас:
class ExamAnswersForm(Form):
# get static data from database
data = {'q_1': ('Is FEAR a good book?', (1, 'Yes'), (0, 'No')),
'q_2': ('Is the Earth flat?', (0, 'Yes'), (1, 'No'))}
for label in data.keys():
vars()[label] = RadioField(data[label][0], choices=[data[label][1], data[label][2]])
Если вы хотитечтобы сделать это более динамичным, вы можете создать метод, который возвращает инициализированную форму:
def exam_answers_form(*args, **kwargs):
# do something with *args and **kwargs to get dynamic data from database
data = {'q_1': ('Is FEAR a good book?', (1, 'Yes'), (0, 'No')),
'q_2': ('Is the Earth flat?', (0, 'Yes'), (1, 'No'))}
class ExamAnswersForm(Form):
pass
for label in data.keys():
setattr(ExamAnswersForm, label, RadioField(data[label][0], choices=[data[label][1], data[label][2]]))
return ExamAnswersForm()