0

django で更新フォームを検証しようとしています。これが私のコードです:

if request.method == 'POST':
    form = LawsIdsForm(request.POST)
    lawToValidate= form.data['lawsToValidate']
    #if a law is selected
    if lawToValidate!="":
        law=LawsIdsModel.objects.get(id=lawToValidate)
        formInstance = LawsIdsForm(instance=law, initial={'lawsToValidate':lawToValidate})  
        #saves the law
        if 'lawsValidationSaveButton' in request.POST:
            print "save"
            if form.is_valid():
                print "form valid"
                formInstance.save()
            else:
                print "form not valid", form.errors

今、私はデータを保存したいと思います。formInstance.is_valid() を使用すると、フォームがバインドされていないため機能しません。form.is_valid() を実行すると、単一性エラーのために false が返されます。データを追加したくないがデータを更新したくないことをdjangoに伝える方法は? (これらの単一性エラーは、データを追加する場合にのみ発生する可能性があります)

4

2 に答える 2

0

解決しました!!

ここに私が変更したものがあります:

if request.method == 'POST':
    lawToValidate=request.POST.getlist('lawsToValidate')[0]
    #if a law is selected
    if lawToValidate!="":
        law=LawsIdsModel.objects.get(id=lawToValidate)      
        #saves the law
        if 'lawsValidationSaveButton' in request.POST:
            print "save"
            form = LawsIdsForm(request.POST, instance=law)
            if form.is_valid():
                print "form valid"
                form.save()
            else:
                print "form not valid", form.errors
于 2013-09-19T18:08:01.327 に答える
0

同じフォームを検証して保存する必要があります。

        if formInstance.is_valid():     <-- change here!
            print "form valid"
            formInstance.save()

あなたのケースformInstanceでは、インスタンスがバインドされているためです。

django の引用フォーム ドキュメントの操作

フォームからのデータの処理: is_valid() が True を返すと、正常に検証されたフォーム データが form.cleaned_data ディクショナリに格納されます。このデータは、適切に Python 型に変換されています。

于 2012-12-08T19:57:47.933 に答える