Представления отношений в Django не показывают контрольные списки, принадлежащие каждой задаче
Я хочу отображать под каждой задачей, все чеклисты, которые принадлежат данной задаче
Мои модели
class Project(models.Model):
project_manager = models.ForeignKey(Profile, on_delete=CASCADE)
title = models.CharField(max_length=55, null=True, blank=True)
developers = models.ManyToManyField(Profile, related_name='projects')
slug = models.SlugField(max_length=500, unique=True, blank=True)
description = models.TextField(default="Project description")
date = models.DateTimeField(auto_now_add=True)
start_date = models.DateTimeField()
due_date = models.DateTimeField()
teams = models.ForeignKey(Team, blank=True, null=True, on_delete=CASCADE)
tasks = models.ManyToManyField("Task", blank=True)
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super(Project, self).save(*args, **kwargs)
def get_url(self):
return reverse('project_detail', kwargs={
'slug':self.slug
})
def __str__(self):
return self.title
@property
def num_task(self):
return self.tasks.count()
@property
def num_task_completed(self):
return self.tasks.filter(task_completed = True).count()
class Task(models.Model):
title = models.CharField(max_length=55, null=True, blank=True)
slug = models.SlugField(max_length=500, unique=True, blank=True)
task_completed = models.BooleanField(default=False)
description = models.TextField(default="Task description")
date = models.DateTimeField(auto_now_add=True)
due_date = models.DateTimeField()
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super(Task, self).save(*args, **kwargs)
def __str__(self):
return self.title
def get_url(self):
return reverse('task_detail', kwargs={
'slug':self.slug
})
class Checklist(models.Model):
title = models.CharField(max_length=55)
slug = models.SlugField(max_length=500, unique=True, blank=True)
date = models.DateTimeField(auto_now_add=True)
due_date = models.DateTimeField()
check_completed = models.BooleanField(default=False)
task = models.ForeignKey(Task, blank=True, null=True, related_name='tasks', on_delete=CASCADE)
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super(Checklist, self).save(*args, **kwargs)
def return_url(self):
return reverse('project_detail', kwargs={
'slug':self.slug
})
def __str__(self):
return self.title
и в моем представлении, где я хочу получить доступ к контрольному списку
def project_detail(request, slug):
'''
Detailed view of given project
'''
project = get_object_or_404(Project, slug=slug)
tasks = Task.objects.filter(task_completed=False, project=project)
checklists = Checklist.objects.filter(check_completed=False, task__in=tasks)
context = {
'tasks': tasks,
'project': project,
'checklists': checklists,
'title': tasks
}
return render(request, 'projects/tasks.html', context)
Когда я пытаюсь получить все контрольные списки в данной задаче, я отображаю все контрольные списки, созданные в каждой задаче, если 3 контрольных списка, где 2 принадлежат одной задаче, а последний принадлежит другой задаче, он отображает все 3 контрольных списка в обеих задачах.
в html я делаю
{% for checklist in checklists %}
<a href="{{ checklist.get_url }}"><h6 data-filter-by="text">{{ checklist.title }}</h6></a>
Тогда внутри задач он должен дать мне контрольные списки, которые принадлежат задаче, но нет.