Django动态获取模型的属性

时间:2012-07-31 19:47:09

标签: django django-models

我有一个类似

的模型
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" }}

我该怎么做?

由于

1 个答案:

答案 0 :(得分:2)

我假设您的意思是要使用另一个变量来访问模型上的字段,而您当时并不知道该变量。因此,您可能会将some_var传递到模板中,这是您要显示的模型中的字段,例如comment或upload_date。

您可以构建template tag来执行此操作:

@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 %}