【问题标题】:Django formset and form ValidationErrorDjango 表单集和表单 ValidationError
【发布时间】:2016-03-18 14:27:15
【问题描述】:

我在尝试同时保存表单和表单集时遇到验证错误。 验证错误

at /event-admin-2/ [u'ManagementForm 数据丢失或已丢失 篡改']

发布方式:

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))

模板:

<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 输出:

<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>

【问题讨论】:

    标签: python django forms formset


    【解决方案1】:

    您已经在 post 方法中实例化 formset 的地方设置了 prefix='foo',但大概没有在 get 方法中的任何地方设置。

    【讨论】:

    • 我将前缀声明移动到上下文方法,但仍然是同样的错误
    • 需要在两个地方。
    猜你喜欢
    • 2018-11-10
    • 1970-01-01
    • 2021-10-02
    • 2018-02-08
    • 1970-01-01
    • 2011-12-11
    • 2013-09-17
    • 2020-11-17
    • 1970-01-01
    相关资源
    最近更新 更多