【问题标题】:How to get django models field value from model object in template tags如何从模板标签中的模型对象中获取 django 模型字段值
【发布时间】:2011-10-07 09:20:53
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    我会验证:

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

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

    如果你正确地格式化你的代码,这对我们有很大帮助,除了提供足够的上下文,以便我们知道事情来自哪里,什么是什么等等,以便提供答案。

    【讨论】:

    • 嗨,brandon discussion1 是一个拼写错误。m2 是一个包含版本值的变量。我在 shell 中尝试它可以正常工作。请帮助我如何在模板中获取它
    • p = Discussion.objects.filter(version=m2) 返回对象列表。所以 p[0].'version' 给出了想要的结果。因为对我来说我总是需要单个对象作为返回类型我在模板中使用 p = Discussion.objects.get(version=m2) 我使用 {{p.version} } 有用。感谢布兰登花时间陪我
    【解决方案2】:

    那是因为您发送到视图的p 是一个查询集,而不是一个对象实例。请尝试以下操作:

    {% 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 将引发错误。

    【讨论】:

    • 好答案@滚石。我完全错过了他使用过滤器而不是获取的事实。这么晚了我就不回答问题了:)
    • @Brandon haha​​ 你应该看到我在深夜给出的其他一些答案!
    猜你喜欢
    • 2020-07-07
    • 2019-01-25
    • 2016-12-18
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    相关资源
    最近更新 更多