4

以下に示すようなフォームを取得しました。HTML がレンダリングされるときに、データベースからの情報をフォームに入力したいと考えています。ビューのパラメーターとして同僚の ID を渡しています。

以下のコードを参照してください。

view.py

def EditCoworker(request, id):
    form = FormEditCoworker(Coworkers.objects.get(id=id))
    if request.method == "POST":
        form = FormEditCoworker(request.POST)
        if form.is_valid():
            form.save()
            confirmation_message = "Coworker information updated successfully!"
            return render(request, "coworkers/coworkers.html", locals())
        else:
            return render(request, "coworkers/edit_coworker.html", locals())
    return render(request, 'coworkers/edit_coworker.html', locals())

フォーム.py

class FormEditCoworker(ModelForm):
    class Meta:
        model = Coworkers

urls.py

url(r'^edit_coworker/(?P<id>[\d]+)$', views.EditCoworker),

もちろん、views.py のコードは正しくありません。

誰かがこれについて私を助けることができますか?

前もって感謝します!

4

1 に答える 1

4

この行

form = FormEditCoworker(Coworkers.objects.get(id=id))

する必要があります

form = FormEditCoworker(instance=Coworkers.objects.get(id=id))

コワーカーが存在しない場合は本当に処理する必要がありますが

form = FormEditCoworker(instance=get_object_or_404(Coworkers, id=id))

編集: Alisdair が言ったように、インスタンス キーワード arg もバインドされたフォームに渡す必要があります。

instance = get_object_or_404(Coworkers, id=id)
form = FormEditCoworker(instance=instance)
if request.method == "POST":
    form = FormEditCoworker(request.POST, instance=instance)
于 2012-12-17T13:51:15.470 に答える