鉴于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)
我希望有一个作者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 %}
我还希望不按名称进行过滤,但由于名称可能不是唯一的特定作者。
答案 0 :(得分:3)
您可以使用reverse relationship
context['entries'] = self.object.entry_set.all()
这为您提供了Entry
的所有Author
个对象。
你为什么要使用author__name
?
您可以直接按对象过滤:
context['entries'] = Entry.objects.filter(authors=self.object)