【发布时间】:2020-07-28 05:14:55
【问题描述】:
我的模型中有项目和任务。我想在模板上显示:
项目 1
- 任务 1:1
- 任务 1:2
- 任务 1:n
项目 2
- 任务 2:1
- 任务 2:n
项目n
这是模型
class Projects(models.Model):
slug_project = models.CharField(max_length=200)
project_name = models.CharField(max_length=200)
project_due_date = models.DateTimeField()
project_lead_time = models.IntegerField()
project_assignee = models.CharField(max_length=200)
project_status = models.CharField(max_length=200)
def __str__(self):
return self.project_name
class Tasks(models.Model):
slug_task = models.CharField(max_length=200)
task_name = models.CharField(max_length=200)
task_desc = models.TextField(null=True)
task_channel = models.CharField(max_length=200)
task_id = models.ForeignKey(Projects, on_delete=models.CASCADE)
task_due_date = models.DateTimeField('Due Date')
task_lead_time = models.IntegerField()
task_assignee = models.CharField(max_length=200)
def __str__(self):
return self.task_name
我不确定如何正确构建视图,但这是我的代码:
class somePage(generic.ListView):
template_name = 'dashboard/index.html'
context_object_name = 'project_object'
def get_queryset(self):
"""Return the last five published Coupons."""
return Projects.objects.order_by('project_name')
def get_context_data(self, **kwargs):
context = super(somePage, self).get_context_data(**kwargs)
# context['tasks'] = Tasks.objects.order_by('task_name') #this would display ALL tasks
context.update({
'all_project': Projects.objects.all(),
'all_tasks': Tasks.objects.filter(task__id=self.object),
})
return context
而且我也不确定如何构建模板:
{% if project_object %}
{% for project_name in project_object %}
<div class="card_row_h1">
<a href="{% url 'dashboard:task_list' project_name.id %}">
{{ project_name }}
</a>
</div>
{% if all_tasks %}
{% for task_name in tasks %}
<div class="card_row_h2" style="width: 100%; padding-left: 30px;">
<small>{{ task_name }}</small>
</div>
{% endfor %}
{% else %}
<div class="card_row_h2" style="width: 100%;">
No Tasks for This Project
</div>
{% endif %}
{% endfor %}
结果是项目正确显示,但在每个项目下我没有得到任何“all_tasks”并且它显示“此项目没有任务”或者如果我使用“任务”(请参阅视图中的注释行),它会显示所有项目的所有任务一遍又一遍。
所以这里有两个问题:
- 如何构建视图,以及
- 如何构建模板?
我是新手,但我已经坚持了一天多。提前致谢。
【问题讨论】:
-
task_id = models.ForeignKey(Projectsattr 名称的可怕选择。这是project。 -
对不起,我不熟悉这些约定。你能进一步解释一下吗?
标签: django python-3.x django-views django-templates