Django формы cleaned_data полностью отсутствуют поля - PullRequest
0 голосов
/ 03 февраля 2020

forms.py

from datetime import datetime, date, timedelta
from django import forms

class MyForm(forms.Form):
    field1 = forms.IntegerField()
    date = forms.DateTimeField(initial=datetime.now)
    field3 = forms.IntegerField(
        help_text="Number of something")
    field4 = forms.IntegerField(required=False)
    field5 = forms.IntegerField(required=False)

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['field1'].widget.attrs['readonly'] = True

    def clean(self):
        cleaned_data = super().clean()
        submit_date = cleaned_data.get("date")

        # relevant validation checks here

После отправки формы переменная submit_date равна None. Он не только None, но и полностью отсутствует из словаря cleaned_data.

Вот как выглядит диктант cleaned_data при выполнении запроса:

{'field1': 1, 'field3': 22, 'field4': 0, 'field5': 200}

Что может быть причиной этой ошибки? Любая помощь будет высоко оценена.

РЕДАКТИРОВАТЬ

Шаблон:

<div class="row">
    <div class="col-8">
        <form action="{% url 'myapp:relevant_view' %}" method="POST">

            {% csrf_token %}
            <div class="card">
                <div class="card-body">
                    {% crispy formset helper %}
                </div>
            </div>
        </form>

    </div>
</div>

views.py :

def main_view(request):
    MyFormSet = formset_factory(MyForm, extra=0)
    helper = MyFormSetHelper()
    if request.method == 'POST':
        formset = MyFormSet(request.POST)
        if formset.is_valid():
            all_in_list = []
            for form in formset:
                data = form.cleaned_data

                field1 = data["field1"]
                date = data["date"]
                field3 = data["field3"]
                field4 = data["field4"]
                field5 = data["field5"]

                model = Model(field1, date, field3, field4, field5)
                all_in_list.append(model)
            Model.objects.bulk_update(all)
            return redirect('myapp:index_view')

    formset = ReportFormSet(initial=helper_method_to_get_number_forms())
    return render(request, 'myapp/template.html', {"formset": formset, "helper": helper})

helper.py :

class MyFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(MyFormSetHelper, self).__init__(*args, **kwargs)
        self.add_input(Submit('submit', 'Submit'))
...