#django #django-models #django-templates #django-views #django-template-filters
#django #django-модели #django-шаблоны #django-представления #django-template-filters
Вопрос:
Я работаю над приложением, которое может создавать команды, игроков, сейчас я показываю объекты игроков, которые связаны с помощью внешнего ключа teams, который отображает соответствующих игроков в их команде.Но проблема, с которой я сталкиваюсь, заключается в том, что когда объекты игрока отображаются в подробном представлении, отображаются все игроки, в то время как должны отображаться конкретные объекты игрока.Пожалуйста, помогите мне решить проблему.
вот html
{% include 'games_app/base.html' %}
{% block body_block %}
<div>
{% for players in play.teams.all %}
<h1>Players :<strong>{{players.player_name}}</strong></h1>
<h1>Players-age :<strong>{{players.player_age}}</strong></h1>
<h1>Players-form :<strong>{{players.player_form}}</strong></h1>
<h1>Players-over :<strong>{{players.over}}</strong></h1>
<h1>Players-batting :<strong>{{players.batting}}</strong></h1>
<a href="{% url 'games_app:players_update' players.pk %}">Edit Player</a></br>
<a href="{% url 'games_app:players_delete' players.pk %}">Delete Player</a>
{% endfor %}
</div>
{% endblock %}
Здесь views.py о деталях игроков
def Detail_Players(request,pk):
model = models.Team.objects.get(pk=True)
template_name = 'games_app/players_detail.html'
return render(request, template_name, context=model)
[РЕШЕНО] Я просто изменил модель и другие детали.
Ответ №1:
Вы должны попробовать это:
model = models.Team.objects.get(pk=pk)
А затем передать контекст шаблону правильным образом.
Комментарии:
1. что вы подразумеваете под правильной настройкой контекста
2. после выполнения того, что вы сказали, я получаю запрос на сопоставление команд, которого не существует.
3. Итак, вам нужен pk, которого нет в вашей БД.
4. Вы хотите использовать play.teams.all, но не объявляет в вашем представлении
5. Он существует, но я не знаю, почему он выдает мне эту ошибку
Ответ №2:
Похоже, вы устанавливаете значение pk в True вместо pk.
model = models.Team.objects.get(pk=True)
должно быть
model = models.Team.objects.get(pk=pk)
Комментарии:
1. я получаю сообщение об ошибке, тогда запрос на сопоставление команд не существует.
2. Я просто решил проблему, установив модель для игроков, а затем отобразив данные, это была глупая ошибка, но такая сложная. 🙂
Ответ №3:
в views.py существует самый простой способ создать свой detailview следующим образом:
from django.views import generic
class DetailView(generic.DetailView):
model = Team
template_name = 'games_app/players_detail.html'
затем в urls.py Пк должен быть передан как переменный, чтобы определить, к какому игроку вы хотите перейти:
path('<pk>/detail', views.DetailView.as_view(), name='detail'),
затем в вашем шаблоне используйте метод «set» через цикл for следующим образом:
{% for player in team.player_set.all %}
....