我正在尝试列出电影模型中与Genre ForeignKey相关的所有对象说comedy
类型列表与comedy
相关的所有电影对象
# models.py
class Genre(models.Model):
name = models.CharField(max_length=80, unique=True)
slug = models.SlugField(unique=True)
def __unicode__(self):
return self.name
def get_absolute_url(self):
return reverse("genres:list", kwargs={"slug": self.slug})
class Movie(models.Model):
title = models.CharField(max_length=80)
genre = models.ForeignKey(Genre)
# views.py
def genre_list(request, slug):
instance = get_object_or_404(Genre, slug=slug)
movies = Movie.objects.select_related('genre').all()
context = {
"objects_list": movies,
}
return render(request, 'genres/genres_list.html', context)
模板视图genres/genres_list.html
{% for obj in objects_list %}
<div class="box">
<b>{{ obj.title }}</b>
</div>
{% endfor %}
什么都没有,我什么都没做错?
答案 0 :(得分:3)
上下文中的变量名称object_list
与模板objects_list
中的变量名称不匹配。
context = {
"object_list": shows,
}
{% for obj in objects_list %}
您需要在两个地方使用相同的变量名称。我建议object_list
,因为它在Django中更常见,但是像movies
这样的描述会更好。
最后,如果你想选择特定类型的所有电影,那么你应该使用filter
。
instance = get_object_or_404(Genre, slug=slug)
movies = Movie.objects.filter(genre=instance)
您目前正在使用select_related
,这会做出不同的事情。