DetailView和模板

时间:2016-06-25 09:13:39

标签: django django-generic-views

Django 1.9.7

你能帮我解决一下关于DetailView的三个问题:

  1. 为什么DetailView没有将表单放入上下文而CreateView呢? 我的意思是编写一个模板是非常麻烦的,其中每个字段都像object.headline或object.content一样单独显示。对于CreateView,我们只需将{{form.as_p}}放入模板中。更方便。因此,由于缺乏经验,我无法感受到场景背后的某些逻辑。

  2. 是否有第三方应用程序准备使用DetailView的模板标签?或其他东西来自动化这些选择的字段以显示在模板中。

  3. 或者我应该自己将表单放在get_context_data中?

1 个答案:

答案 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)