我有各种各样的类,其中两个具有这样的结构:
class SomeClass(models.Model):
name = models.CharField(max_length=60, db_index = True, blank=True)
value = models.CharField(max_length=60, db_index = True, blank=True)
year = models.DateField(db_index = True, blank=True)
tags = models.ManyToManyField(Tag, blank=True)
def __unicode__(self):
return self.name
class Meta:
ordering = ('name',)
观点如下:
def home_page(request):
classList = SomeClass.objects.values('name')
someInstance = classList[0]
return render_to_response("base.html", {"classList":classList, "someInstance":someInstance})
模板:
<!DOCTYPE html>
<html>
<head>
{% load staticfiles %}
<title> Title </title>
<link rel="stylesheet" type="text/css" href="{% static "styles/base.css" %}" />
</head>
<body>
<div id="banner">
BANNER TEXT
</div>
<div id="banner-wrapper">
</div>
<div id="sidebar">
CLASS
<ul>
{% for someClass in classList %}
<li><a href="/CLP/{{class.name}}">{{class.name}}</a></li>
{% endfor %}
</ul>
</div>
<div id="someClass">
{% block class %}
<h2> {{someInstance.name}} </h2>
<br>
<h4> {{someInstance.value}} </h4>
{% endblock class %}
</div>
</body>
在我的模板中,我可以随时访问{{ someInstance.name }}
,但如果我尝试{{ someInstance.value }}
之类的话,我就无法获得值。我已经验证了值的存在,并且使用django管理页面以及shell填充了模型。我还能尝试什么?
我正在使用django 1.6
答案 0 :(得分:1)
您只是在视图中提取name
属性:
def home_page(request):
classList = SomeClass.objects.values('name')
------------------------------^^^^^^^^^^^^^^
这就是您的对象的其他属性在模板中不可用的原因。
此外,您的模板 - 不确定它是否是复制粘贴问题:
{% for someClass in classList %}
<li><a href="/CLP/{{class.name}}">{{class.name}}</a></li>
{% endfor %}
我相信你需要{{ someClass.name }}
此外,您的模型中存在缩进问题:
def __unicode__(self):
return self.name
class Meta:
ordering = ('name',)
class Meta:
应与def
处于同一级别,__unicode__
应返回unicode对象:
def __unicode__(self):
return unicode(self.name)