2012-07-31 70 views
0

我有一個像模型的Django的獲取屬性動態

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

你是什麼意思時,你說「dinamically」嗎?如果你能做'{{doc。'comment'}}',你會得到什麼結果?您希望將這與「{{doc.comment}}」區別開來嗎? – marianobianchi 2012-07-31 19:56:02

回答

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