2

我有一个 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)),则继续保存数据。

4

3 回答 3

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)
于 2013-02-25T02:40:44.793 回答
1

当您form.is_valid()创建一个form.datadictform.save()然后将其传递model给与form. 如果您添加中间步骤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

于 2013-02-24T22:35:19.167 回答
0

我会重新定义表单的 clean 方法,以便在 clean_data 字典中进行修改。

于 2013-02-24T19:09:17.370 回答