Это вопрос о том, как передать pk модели продукта на панель навигации, где вызов может происходить с разных страниц / представлений, т. Е. Не всегда со страницы сведений о продукте.
Я использую базовый шаблон для моей панели навигации, а затем у меня есть html-страница и представление для каждой ссылки в панели навигации, например:
Описание товара - product_form.html
- views.ProductUpdateView.as_view()
Цвета - productcolours_list.html
- views.ProductColourListView.as_view()
моя навигационная панель
Идея навигационной панели заключается в том, что когда я смотрю, например, на продукт А, я могу переходить между страницей сведений о товаре, цветами товара, а затем перечнем материалов. Вот как выглядит код navbar:
<li class="nav-item">
<a class="nav-link" href="{% url 'ProductUpdateView' pk=product.pk %}">Product Details</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'ProductColourListView' pk=product.pk %}">Colours</a>
</li>
Проблема в том, что это работает, только когда я нахожусь на странице сведений о продукте, потому что базовый шаблон может интерпретировать, что такое product.pk. Но как только я нажимаю, чтобы перейти к ссылке «Цвета» на панели навигации, он пытается отобразить базовый шаблон, и внезапно он не понимает, что такое product.pk.
Это связано с тем, что на странице «Сведения о продукте» используется модель Product через ProductUpdateView (с которой я затем могу ссылаться на product.pk), а на странице «Цвета» используется модель ProductColour через ProductColourListView, которая в этом случае будет colours.product.pk.
Как будто мне нужен базовый шаблон, чтобы понять, откуда взять ПК, в зависимости от того, захожу ли я со страницы «Сведения о продукте», со страницы «Цвета» или с другой страницы.