如何使用变量访问对象的属性?我有这样的事情:
{% for inscrito in inscritos %}
{% for field in list_fields_inscrito %}
{{inscrito.field}} //here is the problem
{% endfor %}
{% endfor %}
例如Inscrito有:inscrito.id,inscrito.Name和inscrito.Adress,我只想打印inscrito.id和inscrito.Name,因为id和Name都在list_fields_inscrito中。
有人知道这是怎么做的吗?
答案 0 :(得分:4)
您可以为此编写模板过滤器:
<强>的myapp / templatetags / myapp_tags.py 强>
from django import template
register = template.Library()
@register.filter
def get_obj_attr(obj, attr):
return getattr(obj, attr)
然后在模板中你可以像这样使用它:
{% load myapp_tags %}
{% for inscrito in inscritos %}
{% for field in list_fields_inscrito %}
{{ inscrito|get_obj_attr:field }}
{% endfor %}
{% endfor %}
您可以阅读有关writing custom template tags的更多信息。
答案 1 :(得分:2)
所选答案未涵盖您需要访问非字符串属性的情况。
如果您尝试访问不是字符串的属性,则必须使用以下代码:
from django import template
register = template.Library()
@register.filter
def get_obj_attr(obj, attr):
return obj[attr]
为此,在应用程序的文件夹上创建一个名为templatetags的文件夹,然后使用所需名称创建一个python文件并将其粘贴在上面 内部。
在模板中使用{% load YOUR_FILE_NAME %}
加载全新的过滤器,请确保将YOUR_FILE_NAME更改为您的实际文件名。
现在,您可以在模板上使用以下代码访问object属性:
{{ PUT_THE_NAME_OF_YOUR_OBJECT_HERE|get_obj_attr:PUT_THE_ATTRIBUTE_YOU_WANT_TO_ACCESS_HERE }}