简体   繁体   中英

Django formset and form ValidationError

I am facing validation error when I am trying to save form and formset at the same time. ValidationError

at /event-admin-2/ [u'ManagementForm data is missing or has been tampered with']

post method:

def post(self, request, **kwargs):
    self.object = self.get_object()
    event_times = EventTime.objects.filter(event = self.object).exclude(start_time = None)
    if 'update_event_form' in request.POST:
        form_class = self.get_form_class()
        form = self.form_class(request.POST, prefix="foo", instance=self.get_object())
        formset = self.second_form_class(request.POST, prefix="foo2", queryset=event_times)
        if form.is_valid() and formset.is_valid():
            return HttpResponseRedirect('/event-admin-%s' %self.kwargs['event_id']) 
        else:
            return self.render_to_response(
                self.get_context_data(form=form, formset=formset))

Template:

<form method='POST' action=''>{%csrf_token%}
                {% crispy formset event_time_formset_helper %}
                <button id='add-time' type="button" class="btn btn-default">
                    <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
                </button>
                {{ form|crispy }}
                <input class="btn btn-primary" type="submit" name="update_event_form" value="Update" />
            </form>

HTML output:

<div> <input id="id_form-TOTAL_FORMS" name="form-TOTAL_FORMS" type="hidden" value="4" /> <input id="id_form-INITIAL_FORMS" name="form-INITIAL_FORMS" type="hidden" value="1" /> <input id="id_form-MIN_NUM_FORMS" name="form-MIN_NUM_FORMS" type="hidden" value="1" /> <input id="id_form-MAX_NUM_FORMS" name="form-MAX_NUM_FORMS" type="hidden" value="1000" /> </div>

您已经在post方法中实例化表单集的位置设置了prefix='foo' ,但是无论您在get方法中的哪个位置都未设置它。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM