Как использовать один и тот же объект модели в разных шаблонах. Python. Django

Всем доброго дня, столкнулся с проблемой при работе с моделями в Django Python.

У меня имеется такая модель, в которой содержится единственное поле - Name:

models.py

class GroupModel(models.Model):
    name = models.CharField(max_length=10, null=True,blank=True)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'Группа'
        verbose_name_plural = 'Группы'

Которую я использую для вывода наименований групп, в подменю навпанели:

введите сюда описание изображения

Вот так это отображение у меня прописано в шаблоне:

{% for group in groups %}
    <li><a href="{% url 'groups' %}">{{ group.name }}</a></li> 
{% endfor %}

В качестве groups используется переменная из контекстного процессора который подключен в settings.py:

def add_variable_to_context(request):
    return {
        'groups': GroupModel.objects.order_by('id').all(),
        'subjects': SubjectModel.objects.order_by("id").all(),
        'teachers': User.objects.filter(groups__name='teachers').order_by("id").all(),
    }

И уже в следующем шаблоне пытаюсь вывести выбранную мной группу, но вывод не удается:

<div class="head_load_sheet">
    <h1>Часы группы {{group.name}} за месяц</h1>
</div>

Выводится только: "Часы группы за месяц":

введите сюда описание изображения

Вью первой страницы:

def index(request):
    return render(request, 'main/index.html')

Вью второй страницы:

def groups(request):
    return render(request, 'main/deportament/groups.html')

mapping в urls:

 path('deportament/groups/<int:group>/', groups, name='groups'),

Подскажите пожалуйста, как правильно я могу оформить такую работу с моделью и разными шаблонами?


Ответы (1 шт):

Автор решения: Roman Konoval

В контекст добавляется список групп с ключом groups, а в шаблоне вы пытаетесь читать значение с ключом group.

Конечно его там нет. В первом шаблоне group появляется благодаря циклу:

{% for group in groups %}

При переходе по ссылке откуда сервер узнает, какую группу пользователь выбрал? Чтоб показать конкретную группу, нужно чтобы в url, который ведет на страницу показа группы, был параметр с идентификатором группы.

Нужно добавить параметр в urlconf в urls.py:

urlpatterns = [
    path('departament/groups/<int:groupid>/', views.groups),
]

и потом задавать его в шаблоне в url:

{% for group in groups %}
    <li><a href="{% url 'groups' id=group.id%}">{{ group.name }}</a></li> 
{% endfor %}

Теперь идентификатор будет доступен в параметрах view:

def groups(request, groupid):
  group = Group.objects.get(id=groupid)
  ...

И придется группу положить в контекст, чтоб она стала доступна в шаблоне.

→ Ссылка