Как я могу получить доступ к значению первичного ключа отношения многие к одному из шаблона? - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть отношение многие к одному с моделью Предмета и моделью Книги, которая является типом Предмета. У Предмета есть первичный ключ, а у Книги - первичный ключ, а также внешний ключ, который является item_id.

Я выполняю сложный запрос к базе данных SQLite, используя внутреннее соединение, чтобы извлечь все данные из Item, а также все данные из Book. Результатом запроса, помимо других данных, являются два идентификатора pks: один из элемента и один из данных книги. В SQLite заголовок для Item pk - это «id», а заголовок для «Book ID» указан как «id: 1».

В представлениях я запускаю запрос, чтобы собрать объекты в набор запросов book_qs.

В шаблоне я пытаюсь пройти через набор запросов, чтобы получить и отобразить значение объектов в таблице. Поскольку есть два идентификатора или pks, один для Item, а другой для Book, я не могу понять, как извлечь только pk id книги, который помечен как id: 1 из набора запросов. Идентификатор возвращает идентификатор элемента. Иногда в цикле я хочу получить только идентификатор книги, но мне нужно выполнить цикл по book_qs, чтобы отобразить и другие данные в таблице.

mydata['book_qs'] = Item.objects.raw('SELECT  * FROM item INNER JOIN book ON item.id = book.item_id WHERE item.title = %s', [user_input]);

return mydata
{% for myitem in book_qs %}
    {{ myitem.id:1}}
    {% endfor %}

Код приводит к синтаксической ошибке шаблона.

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Поскольку число «много» классов в реляционной базе данных «многие к одному» составляло несколько, и мои записи в БД все еще были тестами на этом этапе, я решил вернуться и пересмотреть модели, чтобы включить явное имя первичного ключа в каждыймодель, что делает эти автоматически сгенерированные идентификаторы проще для доступа из шаблона.Пример.

book_id = models.AutoField(primary_key=True)

, следовательно,

{% for myitem in book_qs %}
   {{ myitem.book_id }}
{% endfor %}
0 голосов
/ 01 мая 2019

В представлении Просто используйте

book_qs

, чтобы сохранить возвращенные данные и создать словарь, подобный этому:

d={'book_qs':book_qs}

и передать его в шаблон

return render('abc.html', d) 

в шаблоне сделать так:

{% for item in book_qs %}
    {{item.id}}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...