Класс формы Django для неизвестного количества полей и типа
Я совсем новичок в фреймворке django. Я пытаюсь сделать веб-приложение, которое поможет школьникам выучить умножение. У меня следующая проблема: Возьмем умножение двух чисел, например, 532 x 42
Я хочу создать класс формы, который генерирует только необходимые поля ввода для всех промежуточных шагов умножения.
5 3 2 x 4 2
(1)
[2][1][2][8]
[1][0][6][4]
----------------
[2][2][3][4][4]
В этом примере скобки должны представлять поля ввода. Скобки [] - это обычные поля ввода, а скобки () - поля ввода переноса.
Вот что я пробовал до сих пор:
class AnswerForm(forms.Form):
def __init__(self, product, *args, **kwargs):
super(AnswerForm, self).__init__(*args, **kwargs)
self.fieldsets = {}
for index, multiplier in enumerate(product.multiplier_list):
rowLength = len(str(multiplier * product.multiplicand))
fieldsetFields = []
for i in range(5, 0, -1):
field_name = f'field_{i}'
self.fields[field_name] = forms.CharField(
label=f'Answer {i}',
widget=forms.TextInput(attrs={'class': 'answer-cell', 'tabindex': i, 'maxlength': 1}),
required=i <= rowLength
)
fieldsetFields.append(self.fields[field_name])
# Determine if row or result
if index + 1 == len(product.multiplier_list):
fieldsetId = f'fieldset-{product.type}result'
else:
fieldsetId = f'fieldset-{product.type}row'
self.fieldsets[fieldsetId] = fieldsetFields
Я использовал наборы полей для группировки различных типов полей ввода. В шаблоне я проверяю, является ли поле обязательным. Если да, то я вывожу поле. Следует помнить, что приведенный выше код не содержит полей переноса.