Django получает доступ к данным FormSet и помещает в панды Dataframe - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь сгенерировать форму, которая бы выглядела следующим образом. Для вывода набора форм необходимо , а затем получить доступ к данным набора форм, чтобы поместить их в кадр данных Pandas для расчета, который может быть доступен в другом файле Python .py.Тем не менее, мой код не извлекает какой-либо пользовательский ввод, когда я его тестирую.Посоветуйте, пожалуйста, что нужно сделать, чтобы это исправить?

views.py

   from django.shortcuts import render
   from django.http import HttpResponse
   from django.http import HttpResponseRedirect
   from django.shortcuts import render
   from .forms import AssumptionsForm, AssumptionsFormSet
   from django.forms import formset_factory

    data_list = []        

    def index(request):
        return HttpResponse("Hello, client. You're at the inputs page.")

    def get_assumptions(request):    

        if request.method == 'POST':

            formset = AssumptionsFormSet(request.POST)

            if formset.is_valid():
                for f in formset:
                    cd = f.cleaned_data
                    data1 = cd.get('bad')
                    data2 = cd.get('likely')
                    data3 = cd.get('best')
                    data_list.append(data1)
                    data_list.append(data2)
                    data_list.append(data3)
        else:
            formset = AssumptionsFormSet()

        return render(request, 'assumptions.html', {'formset': formset})

assumptions.html

    <form action="/analysis2/" method="post">
    {% csrf_token %}
    <table>
    {% for form in formset %}
        {{ form }}
    {% endfor %}
    </table>
    <input type="submit" value="Submit" />
    </form>

forms.py

from django import forms
from django.forms import formset_factory

class AssumptionsForm(forms.Form):
    #title = forms.CharField()
    bad = forms.FloatField()
    likely = forms.FloatField()
    best = forms.FloatField()

AssumptionsFormSet = formset_factory(AssumptionsForm, extra = 5)

1 Ответ

0 голосов
/ 07 июня 2018

Как указано в документах, для использования набора форм в вашем представлении вам необходимо включить formset.management_form в вашу форму.Вот пример из документов:

<form method="post">
    {{ formset.management_form }}
    <table>
        {% for form in formset %}
        {{ form }}
        {% endfor %}
    </table>
</form>

Вот хороший пример того, как использовать формы: https://medium.com/@adandan01/django-inline-formsets-example-mybook-420cc4b6225d Часть панд такая же, как и в предыдущем сообщении по теме от форм Джанго до панд DataFrame

...