【发布时间】:2020-07-17 15:59:18
【问题描述】:
我是 Django 新手(和一般编程),可以通过一些可能非常简单但我想不通的帮助来获得帮助。
目前我正在 Django 中为我的投资组合开发一个项目管理器应用程序。
但我坚持创建不同项目及其任务的列表。
我想创建这样的东西:
项目_1
- 任务项目 1(项目_1)
- 任务项目 2(项目_1)
项目_2
- 任务项目 1(项目_2)
- 任务项目 2(项目_2)
项目_3
- 任务项目 1(项目_3)
- 任务项目 2(项目_3)
- (project_3 的)任务项 3
目前我有以下:
view.py:
def project(request):
""" Show all Projects"""
projects = Project.objects.order_by('date_added')
project = Project.objects.get(id=1)
tasks = project.task_set.order_by('date_added')
context = {'projects': projects, 'tasks': tasks}
return render(request, 'tasks/project.html', context)
项目.html
{% extends "tasks/base.html" %}
{% block content %}
<p>Projects</p>
<ul>
{% for project in projects %}
<li>{{project}}</li>
<ul>
{% for task in tasks %}
<li>{{task}}</li>
{% empty %}
<li>No tasks added </li>
{% endfor %}
</ul>
{% empty %}
<li>No projects have been added yet.</li>
{% endfor %}
</ul>
{% endblock content %}
models.py
class Project(models.Model):
"""A project the user is working on."""
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
"""Return a string representation of the model."""
return self.text
class Task(models.Model):
"""A task of a project to complete."""
project = models.ForeignKey(Project, on_delete=models.CASCADE)
text = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = 'tasks'
def __str__(self):
"""Return a string representation of the model."""
if(len(self.text) < 50 ):
return f"{self.text}"
else:
return f"{self.text[:50]}..."
我得到的结果是:
项目_1
- 任务项目 1(项目_1)
- 任务项目 2(项目_1)
项目_2
- 任务项目 1(项目_1)
- 任务项目 2(项目_1)
项目_3
- 任务项目 1(项目_1)
- 任务项目 2(项目_1)
我知道问题是我使用了project = Project.objects.get(id=1),因此它只显示与项目一相关的任务。
而且我认为如果 id 与正确的项目 id 相关,这可能是解决方案。
我似乎不知道我是如何做到这一点的。或者我可能看错了方向。
欢迎任何帮助,提前感谢。
【问题讨论】:
标签: python django project-management task-management