从模板中的Django对象获取键,值对

时间:2018-08-31 12:32:57

标签: django

如何从模板中的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 }}

1 个答案:

答案 0 :(得分:1)

在您的情况下,unknownUnknownModel模型的实例。 在模板中,您尝试遍历此实例字段,但是items方法有效 字典,而不是您的模型。您可以在模型中提供items方法,以返回包含所需字段的字典或使用以下代码段:

{% 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)})