2013-07-17 129 views
2

我有30+字段的模型,我想在表中显示其中的大约20个字段。我知道有{{ form.as_table }},但是对于非形式模型有没有类似的功能?我目前使用显示django表中的模型字段

{% for name, value in article.get_fields %} 
    <tr> 
    {% if value %} 
     <td>{{ name }} = {{ value }}</td> 
    {% endif %} 
    </tr> 
{% endfor %} 

-where get_fields返回文章的所有领域。这工作正常。我猜想有一个内置的django函数可以做同样的事情,但我在文档中找不到它。

+2

有这样的没有这样的已经可用的实用工具。但是,您可以编写自己的html文件并通过模板标签进行渲染 – karthikr

回答

1

我同意@kathikr,没有内置于模型类中的函数来为您执行此操作。

一种选择是对模型进行子类化并为其添加一个as_table()函数,以解析可用字段并在必要时使用排除属性。

def as_table(self): 
      return "".join(["<tr><td>%s</td><td>%s</td></tr>" % (field.verbose_name, field.value_to_string(self)) for field in self._meta.fields if field not in self.exclude]) 

嗯,这很可能不应该是一个班轮

def as_table(self): 
     result = "" 
     for field in self._meta.fields: 
      if field not in self.exclude: 
       result += "<tr><td>%s</td><td>%s</td></tr>" % 
        (field.verbose_name, field.value_to_string(self)) 
     return result