Класс формы 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

Я использовал наборы полей для группировки различных типов полей ввода. В шаблоне я проверяю, является ли поле обязательным. Если да, то я вывожу поле. Следует помнить, что приведенный выше код не содержит полей переноса.

Вернуться на верх