我有一个简单的视图,像这样:
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>
答案 0 :(得分:2)
select_related
并没有使相关字段在主模型中可用;它根本不会改变结构。通过遵循外键字段,您的相关字段仍然可用。 select_related所做的事情是通过执行JOIN查询来提高效率,以便相关对象已被填充。
您尚未显示模型,所以我无法确定实际的FK字段是什么,但是您需要执行类似tic.subsector_fk.subsector
的操作。