【问题标题】:Get key, value pair from Django object in template从模板中的 Django 对象获取键、值对
【发布时间】:2018-08-31 12:32:56
【问题描述】:

如何从模板中的 get_object_or_404 中获取对象的键、值对,作为上下文从视图传递到模板?

#views.py
def detail(request):
    unknown = get_object_or_404(UnknownModel)
    return render(request, 'app/display.html', { 'some_data':unknown })

在 app/display.html 中,我一直在尝试各种方法:

{{ some_data }}
{{ some_data.keys }}
{{ some_data.items }}

{% for key, value in some_data.items %}
{{ key }} - {{ value }}
{% endfor %}}

但没有任何工作。 如果我知道这些字段,我可以像下面这样轻松访问,但事实并非如此

{{ some_data.field_1 }}

【问题讨论】:

    标签: django


    【解决方案1】:

    在您的情况下,unknownUnknownModel 模型的实例。 在模板中,您正在尝试迭代此实例字段,但 items 方法有效 用于字典,不适用于您的模型。您可以在模型中提供items 方法以返回包含您想要的字段的字典或使用以下sn-p:

    {% for key, value in some_data.__dict__.items %}
    {{ key }} - {{ value }}
    {% endfor %}}
    

    上述方法将显示与您的实例相关的许多内部数据。另一种(更好的)方法是将模型实例转换为视图中的字典,然后将其传递给模板。为此,您可以使用django.forms.models.model_to_dict 方法。

    from django.forms.models import model_to_dict
    
    def detail(request):
        unknown = get_object_or_404(UnknownModel)
        return render(request, 'app/display.html', {'some_data':model_to_dict(unknown)})
    

    【讨论】:

    • 这些会被订购 dict 吗?在我的测试中,输出按顺序跟随模型字段,但这是否有保证?
    猜你喜欢
    • 2012-12-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多