我有一个Django表单都工作正常,但是我需要在用户发布表单后更新一个字段,我在想这应该在视图中完成?我的代码在下面是有问题的视图定义。
def edit_change(request, change_id):
change = get_object_or_404(Change, id=int(change_id))
form = ChangeForm(request.POST or None, instance=change)
change_id = Change.objects.get(id=int(change_id))
context = dict(change=change, id=change_id,form=form)
if form.is_valid():
if form['change_id'] = ""
form.['change_id'] = "TEST_NUM"
cmodel = form.save()
cmodel.save()
return redirect(changes)
return render_to_response('editchange.html',context, context_instance=RequestContext(request))
基本上我想查看change_id是否有值,如果没有添加值(日期+(当天的更改次数+ 1)),继续保存数据。
答案 0 :(得分:2)
def edit_change(request, change_id):
............
if form.is_valid():
change_id = form.cleaned_data['change_id']
cmodel = form.save()
if not change_id:
cmodel.change_id = "TEST_NUM"
cmodel.save()
return redirect(changes)
return render_to_response('editchange.html',context, context_instance=RequestContext(request)
答案 1 :(得分:1)
当您form.is_valid()
时,您创建了一个form.data
词典form.save()
然后传入与model
相关联的form
。如果添加model_object = form.save(commit=False)
的中间步骤,则创建一个模型实例,并填充所有form.data
值。您可以根据需要更改和保存此模型实例。例如。 model_object.change_id = "TEST_NUM"
。完成后,您可以使用model_object.save()
完成,无需使用form.save()
答案 2 :(得分:0)
我会重新定义表单的clean方法,以便在cleaning_data dict中进行修改。