Django样式集-提交按钮未提交

问题描述 投票:0回答:1

我使用的是带有酥脆的FormSet,并且每行上只有一个提交按钮,但是单击提交不会当前更新记录。我搜索并找到了一些类似的答案,这些提示表明提交的内容不在表单内,而我的却在。另外,缺少表单动作,但是我的其他脆脆表单都没有动作,它们可以正常工作。

从下面的代码中看到是否还有其他原因会导致记录无法保存?

forms.py

class ChangeGroupForm(FormHelper):
    def __init__(self, *args, **kwargs):
        super(ChangeGroupForm, self).__init__(*args, **kwargs)
        self.form_method = 'post'
        self.css_class = 'form-inline'
        self.form_id = 'changegroup_form'
        self.form_show_labels = False 
        self.layout = Layout(
            Div(
                Div(                          
                    Div(
                        Field('group', placeholder='Group', css_class="form-control mb-2 mr-sm-2"),
                    css_class='col-lg-3'
                    ),    
                    Div(
                        Field('gps', placeholder='gps coords', css_class="form-control mb-2 mr-sm-2"),
                    css_class='col-lg-8'
                    ), 
                    Div(
                        HTML("""<input type="submit" name="submit" value="Save" class="btn btn-primary mt-1"/>"""),
                    css_class='col-lg-1'
                    ),               
                css_class='row'
                ),
            )
        )
        self.render_required_fields = True

views.py

@login_required
def db_change_groups(request):
    change_form = modelformset_factory(ChangeGroup, fields=('group','gps'))
    change_form_helper = ChangeGroupForm()

    return render(request, 'home/db_change_groups.html', {
        "change_form": change_form,
        "change_form_helper": change_form_helper,
        }) 

template.html

{% crispy change_form change_form_helper %}

rendered html

<form id="changegroup_form" method="post"> <input type="hidden" name="csrfmiddlewaretoken"
        value="7v0000CPl3G70M6HLfF2FAiwefdfsdgdfwewdf7Gp4nay1hFqZ1Y34SBUA000mHBZQ54">
    <div> <input type="hidden" name="form-TOTAL_FORMS" value="10" id="id_form-TOTAL_FORMS"> <input type="hidden"
            name="form-INITIAL_FORMS" value="9" id="id_form-INITIAL_FORMS"> <input type="hidden"
            name="form-MIN_NUM_FORMS" value="0" id="id_form-MIN_NUM_FORMS"> <input type="hidden"
            name="form-MAX_NUM_FORMS" value="1000" id="id_form-MAX_NUM_FORMS"> </div>
    <div>
        <div class="row">
            <div class="col-lg-3">
                <div id="div_id_form-0-group" class="form-group">
                    <div class="controls "> <input type="text" name="form-0-group" value="A" maxlength="50"
                            class="form-control mb-2 mr-sm-2 textinput textInput form-control" placeholder="Group"
                            id="id_form-0-group"> </div>
                </div>
            </div>
            <div class="col-lg-8">
                <div id="div_id_form-0-gps" class="form-group">
                    <div class="controls "> <input type="text" name="form-0-gps" maxlength="255"
                            class="form-control mb-2 mr-sm-2 textinput textInput form-control" placeholder="gps coords"
                            id="id_form-0-gps"> </div>
                </div>
            </div>
            <div class="col-lg-1"> <input type="submit" name="submit" value="Save" class="btn btn-primary mt-1" />
            </div>

        </div>

    </div> <input type="hidden" name="form-0-id" value="1" id="id_form-0-id">
    <div>
        <div class="row">
            <div class="col-lg-3">
                <div id="div_id_form-1-group" class="form-group">
                    <div class="controls "> <input type="text" name="form-1-group" value="B" maxlength="50"
                            class="form-control mb-2 mr-sm-2 textinput textInput form-control" placeholder="Group"
                            id="id_form-1-group"> </div>
                </div>
            </div>
            <div class="col-lg-8">
                <div id="div_id_form-1-gps" class="form-group">
                    <div class="controls "> <input type="text" name="form-1-gps" maxlength="255"
                            class="form-control mb-2 mr-sm-2 textinput textInput form-control" placeholder="gps coords"
                            id="id_form-1-gps"> </div>
                </div>
            </div>
            <div class="col-lg-1"> <input type="submit" name="submit" value="Save" class="btn btn-primary mt-1" />
            </div>

        </div>

    </div> 

    </div> <input type="hidden" name="form-9-id" id="id_form-9-id">
</form>
django django-forms django-crispy-forms
1个回答
0
投票

您需要将这样的东西附加到视图中

def db_change_groups(request):
    ....
    if request.method == "POST":
        form = ChangeGroupForm(request.POST)
        if form.is_valid():
            # Access cleaned data with
            group = form.cleaned_data['group']
            # Then you can save this to a model.

            # return success template or something
        else:
            # Check for errors. 

如果使用ModelForm而不是FormHelper创建了表单,则可以使用form.save(),它将自动将其保存到模型中。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.