0
根據答案:Can model properties be displayed in a template,我試圖讓屬性,它可以在模板顯示:財產上的模板無效
class MyClass(models.Model):
first_name = models.CharField(max_length = 10)
last_name = models.CharField(max_length = 10)
def __unicode__(self):
return "%s %s" % (self.first_name, self.last_name)
@property
def initials(self):
return "%s.%s." % (self.first_name[0:1], self.last_name[0:1])
也試過:
def _get_initials(self):
return "%s.%s." % (self.first_name[0:1], self.last_name[0:1])
initials = self._get_initials()
和模板:
{% for i in people %}
{{ i.initials }}
{% endfor %}
但結果是空字符串
我更改模板:
{% for i in people: %}
{{ i.instance.initials }}
{% endfor %}
,但仍然空字符串。
如果我使用:
{% for i in people: %}
{{ i }}
{% endfor %}
我得到的Unicode結果,因此模型,形式和模板是正確的
請不要專注於解決問題的縮寫,因爲我需要將財產用於更復雜的任務 - 這僅僅是一個例子。
更新
我添加@財產,因爲它並沒有,所以我一直在尋找解決方案的工作...
此問題與屬性無關。你爲什麼要給「人」添加冒號?這將導致變量不被發現,所以沒有什麼可以迭代。 – 2014-09-24 11:21:10
冒號是錯字。在我的應用程序當然沒有冒號。那麼,我不知道我是否必須使用財產或沒有財產,它也不起作用,所以我GOOGLE了,並發現建議使用財產(問題頂部的鏈接) – 2014-09-24 11:28:13
然後,代碼沒有問題你已經展示過。你確定'i'是你想象的嗎,即'MyClass'對象的列表或查詢集?自從添加該方法後,您是否重新啓動了服務器? – 2014-09-24 11:37:52