Django 1.9.7
你能帮我解决一下关于DetailView的三个问题:
为什么DetailView没有将表单放入上下文而CreateView呢? 我的意思是编写一个模板是非常麻烦的,其中每个字段都像object.headline或object.content一样单独显示。对于CreateView,我们只需将{{form.as_p}}放入模板中。更方便。因此,由于缺乏经验,我无法感受到场景背后的某些逻辑。
是否有第三方应用程序准备使用DetailView的模板标签?或其他东西来自动化这些选择的字段以显示在模板中。
或者我应该自己将表单放在get_context_data中?
答案 0 :(得分:0)
DetailView
不适合编辑。为此目的使用UpdateView
。
如果要以相同的格式循环显示每个字段,则必须在上下文中将字段名称作为列表传递,然后循环遍历此列表:
{% for field_name in field_names %}
<tr>
<th>{% get_field_label object field_name %}</th>
<td>{% get_field_value object field_name %}</td>
</tr>
{% endfor %}
并创建自定义模板标记:
@register.simple_tag
def get_field_label(obj, name):
return obj._meta.get_field(name).verbose_name
@register.simple_tag
def get_field_value(obj, name):
return getattr(obj, value)