Использование первичного ключа для индексации HTML-шаблона Django
Немного запутался, как мне индексировать список, который у меня есть, на основе первичного ключа в шаблоне HTML? Вот моя страница представлений:
def current_game_table(request):
items = list(Nbav8.objects.using('totals').all())
return render(request, 'home/testing.html', {'items': items})
def current_games(request, pk):
item = Nbav8.objects.using('totals').get(pk=pk)
items2 = list(CurrentDayStats.objects.using('totals').values_list('home_team_over_under_field', flat=True))
return render(request, 'home/testing2.html', {'item': item, 'uuup':items2})
Вот мой файл testing1.html:
Hello World
{{ items }}
{% for item in items %}
<a href="{% url 'current_games' item.pk %}">{{ item.home_team_field }}</a>
{% endfor %}
Вот мой файл testing2.html:
<p>The price of this item is: {{ item }}</p>
Where is it?!!?
{{ item.uuup }}
URL файл:
from django.urls import path, re_path
from apps.home import views
urlpatterns = [
# The home page
#path('', views.index, name='home'),
# Matches any html file
#path('charttest/', views.charttest, name='charts'),
path('', views.nba, name='nba'),
path('nbav2/', views.nba2, name='nba2'),
path('nbav3/', views.nba3, name='nba3'),
path('ncaa/', views.ncaa, name='ncaa'),
path('nhl/', views.nhl, name='nhl'),
path('testing/', views.current_game_table, name='testing'),
path('current_games/<int:pk>', views.current_games, name='current_games')
Мои страницы отображаются нормально testing1 показывает мои страницы так, как я хочу для целей тестирования, моя проблема в следующем. На моей странице testing2.html, которая отображается, у меня есть список "uuup", моя проблема в том, что я хочу показать только uuup.0 на странице 1, uuup.1 на странице 2, uuup.2 на странице 3, и т.д. Я не могу понять, как использовать pk в качестве индекса? Я установил переменную diff в моей странице views и установил ее в int(item) и распечатал ее на каждой странице, чтобы подтвердить, что каждая подстраница показывает ее как 1/2/3/4/etc, поэтому я не знаю, как вызвать ее, чтобы использовать индекс для моего списка "uuup"?
Вы можете нарезать в своем представлении следующим образом:
def current_games(request, pk):
item = Nbav8.objects.using('totals').get(pk=pk)
index = pk - 1
items2 = CurrentDayStats.objects.using('totals').values_list('home_team_over_under_field', flat=True)[index]
return render(request, 'home/testing2.html', {'item': item, 'uuup':items2})
Использование pk в качестве индекса неправильно, причина в том, что значение pk не является последовательным, вместо этого вы можете сделать что-то вроде этого:
testing1.html:
{% for item in items %}
<a href="{% url 'current_games' item.pk forloop.counter0 %}">{{ item.home_team_field }}</a>
{% endfor %}
urls.py:
path('current_games/<int:pk>/<int:page>/', views.current_games, name='current_games')
views.py:
def current_games(request, pk, page):
item = Nbav8.objects.using('totals').get(pk=pk)
items2 = CurrentDayStats.objects.using('totals').values_list('home_team_over_under_field', flat=True)[page]
return render(request, 'home/testing2.html', {'item': item, 'uuup':items2})