Список заявок исчезает из боковой панели после нажатия на ссылку в Django
Я работаю над проектом Django, в котором мне нужно отображать список присланных работ в боковой панели. Боковая панель включена в базовый шаблон (main.html), а все остальные шаблоны расширяют этот базовый шаблон. Боковая панель корректно отображает список заявок, когда я перехожу на главную страницу. Однако, когда я щелкаю на определенной заявке в боковой панели, приложение переходит на нужную страницу, но в боковой панели отображается только та заявка, на которую я щелкнул, а все остальные заявки исчезают.
Вот соответствующая часть моей установки:
Models.py:
from django.db import models
from users.models import UserProfile
# Create your models here.
class ResearchWork(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
def __str__(self):
return self.name
class Assignment(models.Model):
student = models.ForeignKey(UserProfile, related_name='student_assignment', on_delete=models.CASCADE)
teacher = models.ForeignKey(UserProfile, related_name='teacher_assignment', on_delete=models.CASCADE)
is_accepted = models.BooleanField(default=False) # charfield
created_at = models.DateTimeField(auto_now_add=True)
text = models.TextField(blank=True)
def __str__(self):
return f"Assignment for {self.student.user.username} with {self.teacher.user.username}"
class Submission(models.Model):
assignment = models.ForeignKey(Assignment, on_delete=models.CASCADE)
SEMESTER_CHOICES = (
('1', 'Semester 1'),
('2', 'Semester 2'),
('3', 'Semester 3'),
('4', 'Semester 4'),
('5', 'Semester 5'),
('6', 'Semester 6'),
('7', 'Semester 7'),
('8', 'Semester 8'),
)
semester = models.CharField(max_length=100, null=True, choices=SEMESTER_CHOICES)
research_work = models.ForeignKey(ResearchWork, on_delete=models.CASCADE, null=True)
created_at = models.DateTimeField(auto_now_add=True, null=True)
def __str__(self):
research_work_name = "No Research Work Assigned" if self.research_work is None else self.research_work.name
return f"{research_work_name} - for student {self.assignment.student.user.username} in semester - {self.semester}"
Контекстный процессор:
from base.models import Submission
def user_profile_pk(request):
context = {}
if request.user.is_authenticated:
user_profile_pk = request.user.userprofile.pk
context['user_profile_pk'] = user_profile_pk
student = request.user.userprofile
submissions = Submission.objects.filter(assignment__student=student)
context['submissions'] = submissions
else:
context['user_profile_pk'] = None
context['submissions'] = None
print(f"Submissions for {student}: {submissions}")
return context
Настройки:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
BASE_DIR / 'templates'
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'users.context_processors.user_profile_pk',
],
},
},
]
Часть моего шаблона, где я зацикливаю все представления от модели:
{% for submission in submissions %}
<li class="nav-item">
<a
class="nav-link"
href="{% url 'research-work-detail' rw_id=submission.research_work.id semester=submission.semester subm_id=submission.id %}"
><span class="nav-icon"></span>{{submission.research_work.name}} -
Сем.{{submission.semester}}</a
>
</li>
{% endfor %}
Урлы:
urlpatterns = [
path('login/', views.loginPage, name='login'),
path('home/', views.home, name='home'),
path('student/<str:pk>/', views.student_home, name='student-home'),
path('research-work/<int:rw_id>/<str:semester>/<int:subm_id>/', views.research_work_detail, name='research-work-detail'),
path('topics/<int:rw_id>/<int:topic_id>/<int:subm_id>/', views.upload_page, name='upload-page'),
path('upload-file/<int:subm_id>/<int:topic_id>/', views.upload_file, name='upload-file'),
path('choose-teacher/<int:student_id>/', views.choose_teacher, name='choose-teacher'),
]
urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)
views.research_work_detail:
def research_work_detail(request, rw_id, semester, subm_id):
research_work = get_object_or_404(ResearchWork, pk=rw_id)
submissions = Submission.objects.filter(research_work=research_work, semester=semester)
submission = get_object_or_404(Submission, pk=subm_id)
topics = Topic.objects.filter(research_work=research_work)
context = {'research_work': research_work, 'submissions':submissions, 'topics': topics, 'submission_id':submission.id }
return render(request, 'users/topics.html', context=context)
Почему после перехода на страницу конкретной заявки в боковой панели отображается только та заявка, на которую нажали, и как это исправить, чтобы постоянно отображались все заявки?
Любая помощь будет очень признательна!