【问题标题】:Instantiate a modelform from a given instance in a template从模板中的给定实例实例化模型表单
【发布时间】:2011-07-14 15:04:29
【问题描述】:

我需要对 object_list 视图中的某些实例进行快速更改,我选择使用 object_list 中每个对象的表单进行一定程度的渐进式增强,最终看起来像这样:

<ul>
{% for column in columns %}
<li class="{% if not column.is_available %}disabled{% endif %}">
    <h3>{{column.pk}}. <a href="/column/{{column.pk}}">{{column.name}}</a></h3>
    <a href="/column/{{column.pk}}">Registros con esta columna</a>
    <form action="/column/{{column.pk}}" method="post" class="column_form">
    {% csrf_token %}
    <input type="hidden" name="object_id"  value="{{column.pk}}"/>
    <input type="hidden" name="name"  value="{{column.name}}"/>
    <input type="hidden" name="label"  value="{{column.label}}"/>
    ...
    {{ column_form.data_type }}
    <label>geográfico</label><input type="checkbox" name="has_geodata" {% if column.has_geodata %}checked{% endif %}/>
    <label>disponible</label><input type="checkbox" name="is_available"  {% if column.is_available %}checked{% endif %}/>
    {% if columns.has_geodata %}
    {{columns_form.geodata_type}}    
    {% endif %}
    </form>
</li>
{% endfor %}
</ul>

要注意的是,我没有一种简单的方法可以将对象的实例传递给模板的 for 循环中的表单类,因此它对每个字段都有正确的值。

是否有适当的方法来处理这种情况?

我应该把它做成某种内联形式吗?

【问题讨论】:

    标签: django django-templates django-forms


    【解决方案1】:

    您可以创建一个模板标签来接收您的对象实例,然后将表单添加到上下文中,或者在适当的位置呈现表单。

    【讨论】:

    • 最终在视图中执行此操作并将实例化模型表单列表传递给模板而不是对象列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 2011-06-27
    相关资源
    最近更新 更多