多个modelform实例

时间:2012-11-11 01:32:36

标签: django view modelform

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

当前每个模型形式复选框的呈现方式如下:

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

我也尝试过使用

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

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

认为使用这个我可以在我的视图中发布更新。我想我这一切都错了,我迷失了。基本上,我想在列表上有一个复选框,就像在stackexchange上一样,你可以确认一个答案。有什么建议吗?

1 个答案:

答案 0 :(得分: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>