如何在基于类的视图中使用django-taggit similar_objects()

时间:2018-09-05 21:07:34

标签: django django-taggit

我想在模板上显示4个与当前项目具有相同标签的相关项目。 我正在使用django-taggit软件包,并且已阅读django-taggit doc

并且他们没有解释如何使用“ similar_objects()”来制作具有基于类的视图的相关项

我的views.py:

class GameDetail(DetailView):
    model = Game
    template_name = 'core/game_detail.html'
    context_object_name = 'game_detail'

我的models.py:

class Game(models.Model):
    name = models.CharField(max_length=140)
    developer = models.CharField(max_length=140)
    game_trailer = models.CharField(max_length=300, default="No Trailer")
    game_story = models.TextField(default='No Story')
    tags = TaggableManager()

我的模板“ game_detail.html”非常长,如果您可以解释如何在我的视图中使用django-taggit以及如何在模板上显示相关项目,我将不胜感激

1 个答案:

答案 0 :(得分:0)

您可以这样构建视图:

class GameDetail(DetailView):
    model = Game
    template_name = 'core/game_detail.html'
    context_object_name = 'game_detail'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["related_items"] = self.object.tags.similar_objects()[:4]
        return context

然后,您可以像往常一样使用模板上的related_items列表。

注意:如果您使用的是python2,则super调用应该是这样的:

context = super(self, GameDetail).get_context_data(**kwargs)