如何反向查询ManytoMany Django

时间:2016-05-21 14:05:25

标签: django reverse m2m

我有这两个模型,我想在页面中显示具有特定任务的项目。这些是我的模特:

class Project (models.Model):
    name = models.CharField(verbose_name="Project name", max_length=25)
    tasks = models.ManyToManyField(Task, verbose_name="tasksInProject", blank=True,
                                   related_name="projects+")

class Task(models.Model):
    name = models.CharField(verbose_name="Task", max_length=50)

我称这个观点为:

class TaskToProjectFilterView(DetailView):
    model = Task
    template_name = "vivs/task_filter.html"
    context_object_name = "task_filter"

这是我的html模板:

<h4>filter : {{ task_filter }} </h4>
<h4>projects : 
{% for element in task_filter.projects.all %}
    {{ element }} 
{% endfor %}
</h4>

此代码显示{{ task_filter }},但不显示{{ task_filter.projects.all }}的列表。

你能帮帮我吗?我不明白我的错误。谢谢!

1 个答案:

答案 0 :(得分:1)

正如schwobaseggl所述,删除+符号,它应该按预期工作,使用:

{% for element in task_filter.projects.all %}

来自Django Docs

  

如果您不希望Django不创建向后关系,请将related_name设置为&#39; +&#39;或以&#39; +&#39;结束。例如,这将确保用户模型与此模型不具有向后关系: