【问题标题】:Django select_related queryset in template not rendering模板中的 Django select_related 查询集未呈现
【发布时间】:2019-05-04 02:45:48
【问题描述】:

我有这样一个简单的观点:

def classticker(request):
    tickermodel = Tickers.objects.all().select_related('subsector_fk')
    form = TickerForm()
    return render(request, 'feeds/main.html', {'v': 10, 'form': form, 'tickermodel': tickermodel})

tickermodel 成功返回了一个查询集,其中包含 Tickers 表和 Subsector 表中的所有字段(通过 subsector_fk 字段)。这包括我在下面的模板中使用的字段“ticker”、“company_name”和“subsector”。

当我渲染我的模板并遍历tickermodel 查询集时,我似乎无法访问来自Subsector 表的字段。 tic.ticker 和 tic.company_name 下面按预期呈现,但 tic.subsector 不是。我不知道为什么??

我的模板如下所示:

<table class="tbllist">
<tr><th>Current Tickers</th></tr>
{% for tic in tickermodel %}
<tr>
  <td><input type="checkbox" name="myclass" value="{{tic.ticker}}"/></td>
  <td class="selectable" data-tik="{{tic.ticker}}"><span class="uppercase">{{ tic.ticker }}</span> - {{ tic.company_name }}</td>
  <td>{{ tic.subsector }}</td>   <!-- <<<< this will not display >>>>> -->
</tr>
{% endfor %}

</table>

【问题讨论】:

    标签: django django-queryset


    【解决方案1】:

    select_related 不会以某种方式使相关字段在主模型中可用;它根本不会改变结构。按照外键字段,您的相关字段仍然可用。 select_related 所做的事情是通过执行 JOIN 查询来提高效率,以便相关对象已经被填充。​​

    你还没有展示你的模型,所以我不知道实际的 FK 字段是什么,但你需要做类似tic.subsector_fk.subsector 的事情。

    【讨论】:

    • 谢谢!如此简单..把我的头发拉出来。我在想 queryset 使用所有数据创建一个新对象,但显然这不是正在发生的事情。
    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2019-10-27
    • 2020-06-15
    • 1970-01-01
    • 2018-04-11
    相关资源
    最近更新 更多