【发布时间】:2016-07-30 05:55:35
【问题描述】:
我尝试在他们所属的项目的上下文中获取任务。通过一个简单的 Project.objects.all() 我得到了我想要的东西。我怎样才能以最好的方式过滤这个查询集?
型号:
class Project(models.Model):
projectname_text = models.CharField('Projectname', unique=True, max_length=200)
class Task(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE,
related_name='tasks')
author = models.ForeignKey(User, null=True, blank=True, related_name='author')
editor = models.ForeignKey(User, null=True, blank=True, related_name='editor')
我尝试使用 Q,但结果看起来它包含太多项目,甚至包含 request.user 错误的项目。也许在这里使用 Q 是错误的方法?
视图中的查询:
project_list = Project.objects.filter(Q(tasks__author=request.user) |
Q(tasks__editor=request.user))
模板:
{% for project in project_list %}
html
{% for task in project.tasks.all %}
html
{% endfor %}
{% endfor %}
【问题讨论】:
标签: django django-queryset django-orm django-q