0

テンプレートにリストがあります。リストの項目ごとに、チェックボックスを含む {{ modelform }} があります。ボックスをチェックすると、必要に応じて更新されます。問題は、1 つのアイテムのボックスをチェックして送信すると、各インスタンスで同じであるため、すべてのチェックボックスに対して送信されることです。リスト内の各項目に一意のチェックボックス インスタンスを設定する方法はありますか?

現在の各モデルフォームのチェックボックスは、次のように同じようにレンダリングされます。

<input name="is_solution" type="checkbox" class="is_solution" id="is_solution">

私も使ってみました

test = request.POST.get('checkbox')

test = request.POST.get('checkbox')

これを使用すると、私のビューに更新を投稿できるかもしれないと考えています。私はこれについてすべて間違っていると思い、迷っています。基本的に、スタックエクスチェンジのように、答えを確認できるチェックボックスをリストに表示したいと思います。助言がありますか?

4

1 に答える 1

1

ビューでフォームのプレフィックスを次のように使用する必要があります (フォーム オブジェクトごとに一意のもの):

def foo(request, ...):
    objs = Model.objects.filter(...)
    forms = []
    for i, obj in enumerate(objs):
        form = ModelForm(instance=obj, prefix=str(i))
        forms.append(form)
    ...

これにより、各フォームに一意の識別子が確実に付与されるため、特定のフォームを送信できます。

そして、テンプレートで通常のようにフォームをレンダリングできます:

<form ...>
{% csrf_token %}
{% for form in forms %}
    {{ form }}
{% endfor %}
</form>
于 2012-11-11T01:48:35.590 に答える