2016-02-10 79 views
0

我想列出所有在电影模式是类型ForeignKey的相关对象说comedy类型列表中的所有影片对象相关comedyDjango的select_related FK模型

# 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

'“object_list”'不应该是'movies',而不是像你的代码中的'shows'? – doru

回答

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,这确实不同的东西。

+0

感谢它现在的作品 – linski