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に値があるかどうかを確認したいのですが、値を追加しない場合(date +(その日の変更数+ 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.datadictが作成され、それが に関連付けられたform.save()に渡されます。の中間ステップを追加すると、モデル インスタンスが作成され、すべての値が取り込まれます。必要に応じて、このモデル インスタンスを変更して保存できます。例。完了したら、使用する必要がなく、 で終了できますmodelformmodel_object = form.save(commit=False)form.datamodel_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メソッドを再定義して、cleaned_datadictで変更を加えます。

于 2013-02-24T19:09:17.370 に答える