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

How to use django-taggit similar_objects() with Class-based views

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

并且他们没有解释如何使用 "similar_objects() " 制作具有基于 Class 的视图的相关项目

我的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" 很长 post 如果你能解释一下如何在我的视图中使用 django-taggit 以及如何在模板上显示相关项目,我会的感恩

您可以这样构建视图:

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 列表。

注意: 如果您使用 python2super 调用应该是这个:

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