0

我的模板中有一个列表。对于列表中的每个项目,我都有一个包含复选框的 {{ modelform }}。我可以选中该框,它会按应有的方式更新。问题是,当我选中一个项目的复选框并提交时,它会提交所有复选框,因为它们在每个实例中都是相同的。有没有办法为列表中的每个项目设置一个唯一的复选框实例?

当前每个模型表单复选框呈现如下:

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

我也尝试过使用

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

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

认为使用它我可能能够在我的视图中发布更新。我想我做错了这一切,我迷路了。从本质上讲,我想在一个列表上有一个复选框,就像 stackexchange 上的这里一样,您可以在其中确认答案。有什么建议么?

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 回答