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