我一直在玩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>
如何使其仅显示标题文本而无需验证?
答案 0 :(得分:0)
只需提供背景信息:
from django.template import RequestContext
context = RequestContext(request, {"your_model":your_model")
现在在模板中写一下:
{{ your_model.some_attribute }}