我是python和django新手,我需要一些帮助
我想做的是,只有当用户是负责人或相关“任务”的作者时,才显示特定的“任务”
我试图用html模板中的if语句来实现这一点:
{% for task in task_list %}
<h2>title - {{task.title}}</h2>
{% endfor %}
{% endif %}
但没有返回我期望的结果,因为:
{% for task in task_list %}
<h2>author --- {{task.author}}</h2>
<h2>responsable --- {{task.responsable}}</h2>
{% endfor %}
返回相同的用户。。。我认为问题在于,当我引用user.username时,它会进入数据库并返回一个查询,当我引用user{{task.blabla}}时,它是一个字符串,我是对的?我怎样才能解决这个问题
models.py:
title = models.CharField(max_length=50)
content = models.TextField(blank=True)
date_created = models.DateTimeField(auto_now_add=True)
due_date = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE, default=User)
responsable = models.ForeignKey(User, on_delete=models.CASCADE, related_name="author", default=User)
STATUS_CHOICES = [('D', 'Done'),('P','Doing'),('N','Not done')]
Status = models.CharField(max_length=1,choices=STATUS_CHOICES, default='N')
IMPORTANCE_CHOICES = [('H', 'High'),('M','Medium'),('L','Low')]
importance = models.CharField(max_length=1,choices=IMPORTANCE_CHOICES, default='M')
DEPARTAMENT_CHOICES = [('D', 'Dev'),('M','Marketing'),('H','Human Resources'),('L','Legal'),('F','Financial'),('O','Others')]
departament = models.CharField(max_length=1,choices=DEPARTAMENT_CHOICES, default='M')
def __str__(self):
return self.title
views.py
def dashboard_taskapp(request):
task = Task.objects.all()
context = {
"task_list": task,
}
return render(request, "task_app/task_dashboard.html", context)
提前感谢并致以亲切的问候
因此,这里更干净、更安全的解决方案是使用Class Based Views(CBV)。有一个专门为显示对象列表而创建的通用CBV-ListView。为了准确实现您所做的,代码将显示如下:
现在要在模板中获得想要的结果,我们只需像这样调用它
当使用CBV时,请记住在URL中使用如下路径
请阅读文档以发现完整的Django通用视图。它确实加快了您的工作速度,稍后重新格式化需要几秒钟而不是几小时
我希望这就是你想要实现的。首先,修改
task
queryset,使其仅显示所选人员的任务。(您需要为或contidion导入Q)然后,没有必要限制你的模板,所以最终它会是这样的
相关问题 更多 >
编程相关推荐