如何反向查询 ManytoMany Django



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

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 }}列表。

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

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

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

来自 Django 文档:

如果你不希望 Django 创建向后关系,请将related_name设置为 '+' 或以 '+' 结尾。例如,这将确保用户模型不会与此模型具有向后关系:

最新更新