0

我有一个模型

class Document(models.Model):
    comment = models.TextField(null=True,blank=True)
    upload_date = models.DateTimeField(blank=False)

文档对象在模板中列为

{% for doc in doc_list %}
    {{ doc.comment }}
    {{ doc.upload_date }}
{% endfor %}

但是,我想达到doc动态喜欢的属性

{{ doc."comment" }}

或者

{{ doc|getField:"comment" }}

我怎样才能做到这一点?

谢谢

4

1 回答 1

2

我假设您的意思是您想通过使用另一个变量来访问模型上的字段,而您当时不一定知道。因此,您可能已some_var被传递到模板中,这是您要显示的模型中的字段,例如评论或上传日期。

您可以构建一个模板标签来执行此操作:

@register.simple_tag
def get_model_attr(instance, key):
    return getattr(instance, key)

现在在您的模板中,您可以执行以下操作:

{% for doc in doc_list %}
    {% get_model_attr doc "comment" %}
    {% get_model_attr doc some_var %}
{% endfor %}
于 2012-07-31T20:18:34.370 回答