簡體   English   中英

Django:Formset提交按鈕不起作用

[英]Django: Formset Submit Button not working

我試圖將一個inlineformset添加到我的CreateView中,以便用戶可以在Parent表單內添加多個子代。 表單生成正確,但是當我單擊“提交”按鈕時,沒有任何反應。

models.py

class Parent(models.Model):
    ...
class Child(models.Model):
    parent = models.ForeignKey(Parent)
    ...

views.py

class ParentCreate(CreateView):
    model = Parent
    form_class = ParentForm

    def get(self, request, *args, **kwargs):
        self.object = None
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        Child_form = ChildFormSet()
        return self.render_to_response(
            self.get_context_data(form=form,
                                  child_form=child_form,
                                  formset=ChildFormSet))

    def post(self, request, *args, **kwargs):
        self.object = None
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        child_form = ChildFormSet(self.request.POST)
        if form.is_valid() and child_form.is_valid():
            return self.form_valid(form, child_form)
        else:
            return self.form_invalid(form, child_form)

    def form_valid(self, form, child_form):
        self.object = form.save()
        child_form.instance = self.object
        child_form.save()

        return HttpResponseRedirect(self.get_success_url())

    def form_invalid(self, form, child_form):
        return self.render_to_response(
            self.get_context_data(form=form,
                                  child_form=child_form,
                                  formset=ParentFormSet))

表格

class ParentForm(ModelForm):
    class Meta:
        model = Parent
        exclude = ('creation', 'last_modified')


ChildFormSet = inlineformset_factory(Parent, Child, extra=10,
                                                       exclude=('creation', 'last_modified'), can_delete=False)

template.html

<form method="POST" action=".">{% csrf_token %}
    {{ form|crispy }}

    {% crispy formset %}

    <input class="btn btn-primary" type="submit" value="Submit" />

</form>

當我將主窗體放在<table> ... </table>時,我解決了問題

像那樣 :

<form id="CreateExamForm" method="POST" enctypr="multipart/form-data">
                    {% csrf_token %}
                    <table>
                        <div class="panel panel-success">
                            <div class="panel-heading">
                                <h3 class="panel-title">Classe - Matière - Date</h3>
                                <span class="pull-right"><i class="glyphicon glyphicon-chevron-up"></i></span>
                            </div>
                            <div class="panel-body">
                                {% crispy doc_form %}

                                {{ file_form_set.management_form }}
                                {% for f_form in file_form_set %}
                                    <div class="form-inline">
                                        {% crispy f_form %}
                                    </div>
                                {% endfor %}
                            </div>
                        </div>
                    </table>
                    <input type="submit" value="Add recipe" class="submit" />
                </form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM