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、テンプレートに渡された可能性があります。これは、comment や upload_date など、表示したいモデル内のフィールドです。

これを行うためのテンプレート タグを作成できます。

@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 に答える