2013-02-24 109 views
2

我有一个Django表单,所有工作都正常,但是我需要在用户发布表单后更新一个表单,我想这应该在视图中完成?我的代码如下所示的视图定义。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)的变化的次数),将继续保存数据。

回答

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

非常感谢你!这是一种享受。 – user2105143 2013-02-27 19:55:17

0

我会重新定义窗体的干净方法,以便它在clean_data字典中进行修改。

1

当你form.is_valid(),创建form.data字典其中form.save()随后进入与form相关的model。如果添加model_object = form.save(commit=False)之间的中间步骤,则创建一个模型实例,填充所有form.data值。您可以根据需要更改并保存此模型实例。例如。 model_object.change_id = "TEST_NUM"。当你完成,你可以用model_object.save()完成,永远不必需要使用此form.save()

更多细节:https://stackoverflow.com/questions/14982699/django-using-savecommit-false-to-add-user-id-to-a-form-dont-modify-save-or