2011-07-18 41 views
6

Models.py:如何从模型对象模板标签Django模型字段值

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。请帮助我解决此问题。我想从模板对象中获取模型字段值。

回答

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) 

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

+0

好的回答@rolling stone。我完全错过了他使用过滤器而不是get的事实。我会停止回答这么晚的问题:) – Brandon

+0

@Brandon哈哈,你应该看到我在深夜给出的一些其他答案! –

0

在您看来,您引用了Discussion1,它不是您模型的名称(Discussion)。 m2的分配值也不明显。

我会核实:

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

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

如果您正确设置代码的格式,除了提供足够的上下文以便我们可以知道事情来自哪里,什么是什么等,以便提供答案,它可以帮助我们做出很多努力。

+0

嗨布兰登讨论1是一个错字errors.m2是一个变量包含版本值。我尝试它在shell它工作correctl.Please帮我我怎么能得到它在模板 – shiva

+0

p = Discussion.objects.filter(version = m2) 返回一个对象的列表。所以p [0]。'version'给出了期望的结果。因为对我来说我总是要求单个对象作为返回类型我使用 p = Discussion.objects.get(version = m2) 在模板中我使用{ p.version}}它的工作原理。感谢布兰登为我花费时间 – shiva