Как получить cleaned_data из FormSetView (django-extra-views) - PullRequest
0 голосов
/ 18 октября 2019

Я не вижу, как вызвать и получить cleaned_data из моего FormSetView. С набором форм django я бы вызвал is_valid() для набора форм в ответе POST, но не уверен, как это сделать здесь. Приведенные в документации примеры не показывают этого, афаик.

Я реализовал именно так, как в примере с документацией django-extra-views. У меня уже есть ModelFormSetView, работающий нормально, хотя обновление БД в этом случае происходит автоматически. Тем не менее, в этом случае немодельной реализации очищенные данные обязательно должны быть преобразованы в другой формат для хранения БД.

Мое представление (вызывается из записи URL):

class TemplateFSView(FormSetView):
    template_name = 'template_season.html'
    form_class = TemplateForm
    success_url = 'tee/home/'

    def get_initial(self):
        # initial data is a pre-load test for now...
        return [{'commence': '07:30', 'finish': '22:00', "spacing": "10"]

    def formset_valid(self, formset):
        # do whatever you'd like to do with the valid formset
        print('How do I get here?')
        return super(TemplateFSView, self).formset_valid(formset)

Форма:

class TemplateForm(forms.Form):
    commence = forms.CharField(required=True, label='first tee-time')
    finish = forms.CharField(required=True, label='last tee-time')
    spacing = forms.CharField(required=True, label='tee spacing')

Шаблон:

<form method="post">
    {% csrf_token %}
    <table>
    {% for form in formset %}
        {% if forloop.counter == 1 %}
        <thead>
            <tr>
                <th scope="col">{{ form.commence.label_tag }}</th>
                <th scope="col">{{ form.finish.label_tag }}</th>
                <th scope="col">{{ form.spacing.label_tag }}</th>
            </tr>
        </thead>
        {% endif %}
        <tr>
            <td>{{ form.commence }}</td>
            <td>{{ form.finish }}</td>
            <td>{{ form.spacing }}</td>
        </tr>
    {% endfor %}
    </table>
    {{ formset.management_form }}
    <input type="submit" value="Submit" />
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...