【问题标题】:Django – Use a template tag within a template tag?Django – 在模板标签中使用模板标签?
【发布时间】:2014-03-20 21:31:33
【问题描述】:

我正在尝试编写一个简单的 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 返回的每个字段

【问题讨论】:

    标签: python django templates django-models django-templates


    【解决方案1】:

    不要这样做,而是更改您的查询,使其返回 ValueQuerySetvalues()

    您的结果将是一个字典列表,这是文档中的一个示例:

    >>> 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.
    

    【讨论】:

    • 这很完美,只是做了一点小改动。我使用“iteritems”而不是“itervalues”。太感谢了!我的最终代码:{% for result in results %} {% for field,value in result.iteritems %} {{field}} : {{value}}<br> {% endfor %} {% endfor %}
    猜你喜欢
    • 2022-11-25
    • 2015-02-27
    • 1970-01-01
    • 2011-06-15
    • 2011-02-09
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多