【问题标题】:Muliple instances of modelformmodelform 的多个实例
【发布时间】:2012-11-11 01:32:35
【问题描述】:

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

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

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

我也尝试过使用

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

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

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

【问题讨论】:

    标签: django view modelform


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2012-03-31
      相关资源
      最近更新 更多