2014-02-20 78 views
1

我想写一个简单的Django视图,打印出表示模型中所有字段的表。Django - 在模板标签中使用模板标签?

我有一个名为Menu_Items模式,与6个领域:

Item_Id 
Name 
Description 
Base_Price 
Image_Path 
Item_Tags 

使用Menu_Items._meta.fields我可以检索的字段的列表。

对于给定的查询集(例如Menu_Items.objects.all()),我想打印出所有字段,格式化为表格。

我试过在上下文中传递字段,但我找不出要使用哪个模板标记。是否可以在模板标签内使用模板标签?像这样:

{% for field in fields %} 
    {{ menuItems.0.{{ field.name }} }} 
    {{ field.name }} 
{% endfor %} 

在这种情况下,本场分别由Menu_Items._meta.fields

回答

3

而不是做这个的返回的字段,改变你的查询,使其返回与values()一个ValueQuerySet

你的结果将是一个字典列表,这里是从文档的例子:

>>> Blog.objects.filter(name__startswith='Beatles').values() 
[{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}] 

现在,在您的模板:

{% for item in results %} 
    {% for column,value in item.iteritems %} 
     {{ column }} {{ value }} 
    {% endfor %} 
{% endfor %} 

这将导致:

id 1 
name Beatles Blog 
tagline All the latest Beatles news. 
+1

这工作完美,只需一个小改动。我用“iteritems”而不是“itervalues”。非常感谢! 我的最后的代码:{{值}}
: '{%为结果在结果%} \t \t \t {{字段}} {%为场,在result.iteritems%值} \t {%endfor%} {%endfor%}' – corycorycory