表单显示带标题的复选框,但无法编辑标题

时间:2013-12-03 15:20:26

标签: django django-forms

我一直在玩Django表格,这有点令人头疼。我来到了一个可以正确显示表单的地方,但我只想编辑部分数据,而不是所有数据。

具体来说:我有一个具有标题和特色bool字段的Product模型。我想要一个显示所有产品名称的表单,旁边有一个复选框。用户可以在同一表格上编辑每个产品的特色属性,但仅限于此!我的问题是,使用当前设置,显示的标题也是输入字段,而不是简单的文本。如果我更改模板以显示{{productForm.title.value}}而不是{{productForm.title}},则会将其显示为文本,但表单会使验证失效(它需要标题具有值,因为它不能是空的)。

Model是简单的,标题和带有CharField和BooleanField类型的特色字段。样本中也没有处理验证分支,但“is_valid()”返回false。

views.py

def featured_product(request):
FeaturedProductFormSet = modelformset_factory(Product, fields=('title', 'featured'))
if request.method == "POST":
    productForms = FeaturedProductFormSet(request.POST)
    if productForms.is_valid():
        productForms.save()
        return redirect('/admin/')
else:
    productForms = FeaturedProductFormSet()

return render_to_response(
    'vetco_app/featured_products.html',
    {
        'productForms': productForms,
    },
    context_instance=RequestContext(request)
)

featured_products.html

<form action="" method="post">
<table>
    <thead>
        <th>
            Termék neve
        </th>
        <th>
            Kiemelt
        </th>
    </thead>
    <tbody>
    {% for productForm in productForms %}
        {% if not forloop.last %}
            <tr>
                <td>
                    {{ productForm.id }}
                    {{ productForm.title }}
                </td>
                <td>
                    {{ productForm.featured }}
                </td>
            </tr>
        {% endif %}
    {% endfor %}
    </tbody>
</table>
<p>
    {{ productForms.management_form }}
    {% csrf_token %}
    <button type="submit" name="action" value="Save">Save</button>
</p>

如何使其仅显示标题文本而无需验证?

1 个答案:

答案 0 :(得分:0)

只需提供背景信息:

from django.template import RequestContext
context = RequestContext(request, {"your_model":your_model")

现在在模板中写一下:

 {{ your_model.some_attribute }}