Django select_related набор запросов в шаблоне не рендеринг - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть простое представление, подобное этому:

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, я не могу получить доступ к полям, которыеисходя из таблицы подсекторов.Ниже 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 голосов
/ 02 декабря 2018

select_related не делает соответствующие поля доступными в основной модели;это не меняет структуру вообще.Ваши связанные поля все еще доступны, следуя полю внешнего ключа.Функция select_related состоит в том, чтобы сделать это более эффективным, выполнив запрос JOIN, чтобы связанные объекты уже были заполнены.

Вы не показывали свои модели, поэтому я не могу сказать, что представляет собой поле FK., но вам нужно будет сделать что-то вроде tic.subsector_fk.subsector.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...