Django фильтрует результаты по внешнему ключу
Я пытаюсь отобразить список заметок, прикрепленных к проекту. Я могу отобразить отдельный проект, к которому привязаны заметки, но не могу понять, как отобразить только заметки, связанные с проектом.
Мои модели:
class Project(models.Model):
title = models.CharField(max_length= 200)
description = models.TextField()
def __str__(self):
return self.title
class ProjectNotes(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
date = models.DateField(auto_now_add=True)
project = models.ForeignKey(Project, default=0, blank=True, on_delete=models.CASCADE, related_name='notes')
def __str__(self):
return self.title
Мнения:
from django.shortcuts import get_object_or_404, render
from django.urls.base import reverse
from django.views.generic import ListView, DetailView
from django.views.generic.edit import CreateView
from .models import Project, ProjectNotes
class CompanyProjects(ListView):
model = Project
template_name = 'company_accounts/projects.html'
class CompanyProjectsDetailView(DetailView):
model = Project
id = Project.objects.only('id')
template_name = 'company_accounts/project_detail.html'
context_object_name = 'project'
class ProjectNotes(ListView):
model = ProjectNotes
template_name = 'company_accounts/project_notes.html'
def get_context_data(self, **kwargs):
# Call the base implementation first to get a context
context = super().get_context_data(**kwargs)
context['project'] = get_object_or_404(Project, id=self.kwargs.get('pk'))
return context
class ProjectNotesDetailview(DetailView):
model = ProjectNotes
template_name = 'company_accounts/project_note_detail.html'
В шаблоне отображается правильный проект:
{% extends 'base.html' %}
{% block content %}
<h1>Notes</h1>
{{ project }}
{% for note in notes %}
<div class ="projectnotes-entry">
<h2><a href="">{{ note.title }}</a></h2>
<p>{{ note.body }}</p>
</div>
{% endfor %}
{% endblock content %}
Пока мне не удалось найти способ отображать только заметки, относящиеся к конкретному проекту.