代码之家  ›  专栏  ›  技术社区  ›  Scott

Django select_模板中的相关查询集未呈现

  •  0
  • Scott  · 技术社区  · 7 年前

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

    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_名称按预期呈现,但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 回复  |  直到 7 年前
        1
  •  2
  •   Daniel Roseman    7 年前

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

    您还没有显示您的模型,因此我无法确定实际的FK字段是什么,但您需要执行以下操作 tic.subsector_fk.subsector

    推荐文章