如何在django中从表单获取数据?

如何在django中从表单获取数据?,django,python-2.7,django-forms,django-templates,django-class-based-views,Django,Python 2.7,Django Forms,Django Templates,Django Class Based Views,我的模板django中有一个表单是ok的,它将ok保存在模型中。现在,我想在这个表单中创建一个新表单。这个表单,我在模板内部创建,但是现在,我想将de数据保存到另一个模型中。(我不能使用表单集,我已经准备好使用它了)。当用户单击列表中的选项时,使用javascript创建此表单 我正在使用基于类的视图创建一个视图 我的问题是,如何从用户动态创建的表单中获取这些数据 <div class="form-group"> <label class="col-s

我的模板django中有一个表单是ok的,它将ok保存在模型中。现在,我想在这个表单中创建一个新表单。这个表单,我在模板内部创建,但是现在,我想将de数据保存到另一个模型中。(我不能使用表单集,我已经准备好使用它了)。当用户单击列表中的选项时,使用javascript创建此表单

我正在使用基于类的视图创建一个视图

我的问题是,如何从用户动态创建的表单中获取这些数据

    <div class="form-group">

        <label class="col-sm-2 control-label">{{form.name.label}}</label>
        <div class="col-sm-10">
        {{form.name}}
        {% if form.name.errors %}
            <span class="glyphicon glyphicon-remove form-control-feedback"></span>
                <span class="help-block">{{form.name.errors.as_text}}</span>
        {% endif %}
        </div>

        <label class="col-sm-2 control-label">{{form.date_max.label}}</label>
        <div class="col-sm-10">
        {{form.date_max}}
        {% if form.date_max.errors %}
            <span class="glyphicon glyphicon-remove form-control-feedback"></span>
                <span class="help-block">{{form.date_max.errors.as_text}}</span>
        {% endif %}
        </div>

        <label class="col-sm-2 control-label">{{form.demand_desc.label}}</label>
        <div class="col-sm-10">
        {{form.demand_desc}}
        {% if form.demand_desc.errors %}
            <span class="glyphicon glyphicon-remove form-control-feedback"></span>
                <span class="help-block">{{form.demand_desc.errors.as_text}}</span>
        {% endif %}
        </div>
        <div class="optional-imege-form">{{formset}}</div>
        <div id="create-new-image-button">Add</div>
    </div>
    <div class="format-list">
        <h3>Lista de formatos:</h3>
        <ul>
            {% for key, value in format_names_fields_dict.items %}
                <li class="format-create" data-format-name-id='{{key}}' data-fields-value='{% for i in value %}{{i}},{% endfor %}'>{{key}}</li>
            {% endfor %}
        </ul>
    </div>
    <div class="col-sm-12 container-with-format-forms">

    </div>
    <div class="ground-light-popup"></div>
    <div class=""></div>
    <div class="pop-up-set-store">
        <label class="col-sm-3 control-label">Por favor, selecione a loja:</label>
        <div class="col-sm-9">
            {{form.demand_store}}
        </div>
        <div class="col-sm-12">
            <div class="btn btn-success store-button">Loja selecionada >></div>
        </div>
    </div>
    <div class="pop-up-set-store-2">
        <h3>Selecione as áreas que será necessária na demanda</h3>
        <div class="col-sm-12">
            <table>
                <tr>
                    <td>{{form.moda.label}}</td>
                    <td> {{form.moda}}</td>
                </tr>
                <tr>
                    <td>{{form.texto.label}}</td>
                    <td> {{form.texto}}</td>
                </tr>
                <tr>
                    <td>{{form.design.label}}</td>
                    <td> {{form.design}}</td>
                </tr>
            </table>
        </div>
        <div class="col-sm-12">
            <div class="btn btn-success area-button">Área(s) selecionada >></div>
        </div>
    </div>
    <div>
        <div class="col-sm-offset-2 col-sm-10">
            <input name="Criar" class="btn btn-default" type="submit" value="Criar">    
        </div>
    </div>
    <script type="text/javascript">
        $(document).ready(function(){
            $formatName = $('.format-create');
            $formatsContainer = $('.container-with-format-forms');

            for(i=0;i<$formatName.length;i++){
                $textFromFormat = $($formatName[i]).text();
                $textSplited = $textFromFormat.split('_');
                $formatJustName = $textSplited[0];
                $formatJustId = $textSplited[1];
                $($formatName[i]).text($formatJustName);
            }
            $($formatName).click(function(){
                $formatData = $(this).data();
                $fieldsToFormat = $formatData.fieldsValue.split(',');
                $myFormatHtml = "<form method='post' id='" + $formatJustId + "'>";
                $myFormatHtml += "<div class='col-sm-12 format-content-field'>";
                $myFormatHtml += "<h4>" + $(this).text() + "</h4>";
                $myFormatHtml += "<input name='format_name' value='" + $formatJustId + "' type='hidden'>";
                for(i=0;i<$fieldsToFormat.length-1;i++){
                    $fieldsToFormatName = $fieldsToFormat[i].split('_');
                    $myFormatHtml += "<label class='col-sm-2'>";
                    if($fieldsToFormatName[2] == 'True'){
                        $myFormatHtml += $fieldsToFormatName[0] + "* </label><input class='col-sm-10' name='field_name' id='id_field_name' type='text' required>"
                    }else{
                        $myFormatHtml += $fieldsToFormatName[0] + "</label><input class='col-sm-10' name='field_name' id='id_field_name' type='text'>"
                    }
                }
                $myFormatHtml += '</div>';
                $myFormatHtml += '</form>'

                $($formatsContainer).append($myFormatHtml);
                $(this).addClass('ready-selected');
                $(this).unbind();
            });
        })
    </script>

{{form.name.label}
{{form.name}
{%if form.name.errors%}
{{form.name.errors.as_text}
{%endif%}
{{form.date_max.label}
{{form.date_max}
{%if form.date_max.errors%}
{{form.date\u max.errors.as\u text}
{%endif%}
{{form.demand_desc.label}
{{form.demand_desc}}
{%if form.demand_desc.errors%}
{{form.demand_desc.errors.as_text}
{%endif%}
{{formset}}
添加
格式列表:
    {%为键,值的格式为\u name\u fields\u dict.items%}
  • 对于(i=0;i在
    @mrnfrancesco
    的注释之后,我应用以下逻辑保存在数据模型中:

    class CreateDemandView(FormView):
    ...
        def form_valid(self, form):
            demand = form.save(commit=False)
            demand.save()
    
            format_name = self.request.POST.getlist('format_name')
    
            for i in format_name:
                fields_name = self.request.POST.getlist('field_name_' + i)
                format_name_id = NewFormatByStore.objects.get(pk=i)
                data_content_field = self.request.POST.getlist('field_format_data_' + i)
    
                j = 0 
                while j < len(fields_name):
                    format_data_demand = FomartWithDataFromDemand(demand_name=demand, format_name=format_name_id, field_name=fields_name[j], field_format_data=data_content_field[j])
                    format_data_demand.save()
                    j += 1
    
    ...
    
    class CreateDemandView(FormView):
    ...
    def表单_有效(自身、表单):
    demand=form.save(commit=False)
    demand.save()
    format\u name=self.request.POST.getlist('format\u name'))
    对于格式为_name的i:
    fields\u name=self.request.POST.getlist('field\u name\u'+i)
    format\u name\u id=NewFormatByStore.objects.get(pk=i)
    data\u content\u field=self.request.POST.getlist('field\u format\u data\u'+i)
    j=0
    而j

    我从POST中获取数据,并将相应的数据保存在模型中。

    Django中的表单数据从
    request.POST
    传递到表单类,该类为您清除数据,删除javascript中添加的自定义数据。您可以访问
    request.POST
    并手动提取您感兴趣的数据。显然似乎有效,我将尝试保存在模型中,我已经通知了。这很有效,如果你创建了答案,我会将其设置为正确。谢谢!!你最好用正确的代码回答你自己的问题,解决了你的问题,以帮助其他编码员解决同样的问题。如果你想给我学分,你可以使用
    @mrnfrancesco
    参考;)