美好的一天,
我们有一个基于inlineformset_factory的formset。在处理POST的视图函数中,如果我们在调试时在is_valid行上设置了断点,则is_valid函数只会成功;如果我们在没有断点的情况下使用run或debug,则客户端会收到500错误。这显然很难追查问题!视图代码如下;任何建议都非常感激。
提前致谢, 兰德尔
@login_required
def child_view(request):
if request.method == 'POST':
if request.is_ajax():
parent_id = request.POST['parent_id']
parent_instance = get_object_or_404(ParentModel, parent_id=parent_id)
child_formset = ChildInlineFormSet(request.POST, instance=parent_instance)
print 'before'
if child_formset.is_valid():
print 'after' # never gets here unless breakpoint on previous line
child_formset.save()
response = json.dumps({'success': 'true'})
return HttpResponse(response)
答案 0 :(得分:0)
我认为原因是因为如果is_valid
检查通过,你只返回一个HttpResponse,这就是为什么你在其他情况下得到500错误的原因。
您的观点应该更像:
@login_required
def child_view(request):
if request.method == 'POST':
if request.is_ajax():
parent_id = request.POST['parent_id']
parent_instance = get_object_or_404(ParentModel, parent_id=parent_id)
child_formset = ChildInlineFormSet(request.POST, instance=parent_instance)
print 'before'
if child_formset.is_valid():
print 'after' # never gets here unless breakpoint on previous line
child_formset.save()
response = json.dumps({'success': 'true'}) # why string not bool?
return HttpResponse(response)
else:
response = json.dumps({'success': 'false'})
return HttpResponse(response)
return HttpResponseBadRequest()