如何从模板标签中的模型对象获取django模型字段值

时间:2011-07-18 03:32:51

标签: django django-models django-templates django-views

Models.py:

class Discussion(models.Model):
    version = models.TextField(blank=True)
    team = models.TextField(blank=True)
    project = models.TextField(blank=True)
    notes = models.TextField(db_column='Notes', blank=True) # Field name made lowercase.
    s = models.TextField(blank=True)
    send_mail_to = models.TextField(blank=True)
    send_mail_cc = models.TextField(blank=True)
    date = models.DateTimeField(null=True, blank=True)

    class Meta:
        db_table = u'discussion'

views.py:

 p=Discussion.objects.filter(version=m2)
 return render_to_response('report/t2',{"p":p})

模板(HTML):

 <tr>
      <td width="20%" class="scratchblackfont12">Release Name :</td>
      <td><div style="overflow:auto"><input name="Release Name (if any ):" autocomplete="on" type="text" class="scratchsearchfield" elname="defaultFocus" id="r1" value="{{p.version}}"  READONLY multiline="true" ></div>
      </td>
    </tr>

但模板显示Nothing。请帮我解决这个问题。我想从模板中的模型对象中获取模型字段值。

2 个答案:

答案 0 :(得分:6)

那是因为您发送到视图的p是QuerySet,而不是对象实例。请尝试以下方法:

{% for p_object in p %}
<tr>
    <td width="20%" class="scratchblackfont12">Release Name :</td>
    <td><div style="overflow:auto"><input name="Release Name (if any ):" autocomplete="on" type="text" class="scratchsearchfield" elname="defaultFocus" id="r1" value="{{p_object.version}}"  READONLY multiline="true" ></div>
    </td>
</tr>
{% endfor %}

如果您想发送特定的p对象实例,则必须在视图中执行以下操作:

p = Discussion.objects.get(version=m2)

但请注意,如果查询返回多个版本= m2的对象,get将抛出错误。

答案 1 :(得分:0)

在您的视图中,您引用了Discussion1,它不是您模型的名称(讨论)。在m2的值被分配的位置也不明显。

我会验证:

objects = Discussion.objects.filter(version=m2)

从shell返回对象。至少,你会得到一个空列表。

如果你正确地格式化你的代码,除了提供足够的上下文以便我们可以告诉事情来自哪里,什么是什么等等,以便提供答案时,它可以帮助我们很多。