模板中的Django select_related查询集未呈现

时间:2018-12-02 17:58:51

标签: django django-queryset

我有一个简单的视图,像这样:

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>

1 个答案:

答案 0 :(得分:2)

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

您尚未显示模型,所以我无法确定实际的FK字段是什么,但是您需要执行类似tic.subsector_fk.subsector的操作。

相关问题