Python 迭代反向多个对象的DetailView

Python 迭代反向多个对象的DetailView,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,给出了Django进行查询的示例: class Author(models.Model): name = models.CharField(max_length=50) ... def __str__(self): return self.name class Entry(models.Model): ... authors = models.ManyToManyField(Author) 我想要一个author DetailView,

给出了Django进行查询的示例:

class Author(models.Model):
    name = models.CharField(max_length=50)
    ...
    def __str__(self):
        return self.name

class Entry(models.Model):
    ...
    authors = models.ManyToManyField(Author)
我想要一个author DetailView,其中包含该作者的条目列表。到目前为止,我所拥有的:

class AuthorDetailView(DetailView):
    model = Author

    def get_context_data(self, **kwargs):
        context = super(AuthorDetailView, self).get_context_data(**kwargs)
        context['entries'] = Entry.objects.filter(
            authors__name=self.object.name)
        return context
在我的模板中:

{% for entry in entries %}
    …
{% endfor %}

我也不希望按姓名过滤,而是按特定作者过滤,因为姓名可能是非唯一的。

您可以使用
反向关系

context['entries'] = self.object.entry_set.all()
这将为您提供该作者的所有
条目
对象

编辑: 你为什么要用作者的名字? 您可以直接按对象进行过滤:

context['entries'] = Entry.objects.filter(authors=self.object)

作者的名字不是我最初的名字,尽管我在尝试各种查询时添加了它。你的两个建议都非常有效,尽管我不得不改变第一个,因为我有一个相关的名字。非常感谢。你知道这两者之间是否有任何性能差异,或者其中一个更好吗?