首页 文章

DetailView和模板[重复]

提问于
浏览
-1

这个问题在这里已有答案:

Django 1.9.7

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

  • 为什么DetailView没有将表单放入上下文而CreateView呢?我的意思是编写一个模板是非常麻烦的,其中每个字段都像object.headline或object.content一样单独显示 . 对于CreateView,我们只需将{}放入模板中 . 更方便 . 因此,由于缺乏经验,我必须在幕后留下一些逻辑 .

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

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

1 回答

  • 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)
    

相关问题