Ошибка при работе с одним объектом модели в нескольких шаблонах Django Python
В соответствии с ответом @RomanKornoval в вопросе - Как использовать один и тот же объект модели в разных шаблонах. Python. Django, получилось настроить переход на страницу. И использовать один и тот же объект модели в разных шаблонах.
Но далее столкнулся с похожей проблемой, дело в том, что у меня есть еще один шаблон redactor_group, который ведет на следующую страницу, на которой пользователь может отредактировать группу, которую он выбрал из выпадающего списка.
url для шаблона redactor_group:
path('deportament/groups/<int:group_id>/redactor_group', redactor_group, name='redactor_group'),
Вью redactor_group:
def redactor_group(request,group_id):
groups = GroupModel.objects.all()
group_id = get_object_or_404(GroupModel, pk = group_id)
context = {"groups" : groups, "group_id" : group_id}
return render(request, "main/deportament/redactor/redactor_group.html",context)
Шаблон из которого переходим на redactor_view:
<ul>
<li><button onclick="window.location.href='{% url "redactor_group" group_id %}'">Изменить</button></li>
<li><button>Импорт</button></li>
<li><button>Экспорт</button></li>
</ul>
Шаблон redactor_view, где используется объект переданный из вью groups.
<h1>Часы группы {{ group_id }} за месяц</h1>
Ошибка, которую получаю при переходе:
Reverse for 'redactor_group' with arguments '(<GroupModel: ПКС-401>,)' not found. 1 pattern(s) tried: ['deportament/groups/(?P<group_id>[0-9]+)/redactor_group$']
вью redactor_group:
def redactor_group(request,group_id):
group = get_object_or_404(GroupModel, pk = group_id)
context = {"groups" : groups, "group" : group}
return render(request, "main/deportament/redactor/redactor_group.html",context)
groups.html:
<li><button onclick="window.location.href='{% url "redactor_group" group.id %}'">Изменить</button></li>
Ошибка:
Reverse for 'redactor_group' with arguments '('',)' not found. 1 pattern(s) tried: ['deportament/groups/(?P<group_id>[0-9]+)/redactor_group$']
Ответы (1 шт):
Проблема в том, что вы сохраняете объект Group под именем group_id и пробуете его использовать, как идентификатор.
Нужно или сохранять реально идентификатор:
group_id = get_object_or_404(GroupModel, pk = group_id).id
Или сохранять группу, но доставать идентификатор уже в шаблоне:
group = get_object_or_404(GroupModel, pk = group_id)
context = {"groups" : groups, "group" : group}
и в шаблоне:
<li><button onclick="window.location.href='{% url "redactor_group" group.id %}'">Изменить</button></li>